基于 ReactPHP 的反向代理 Spike

MIT
PHP
跨平台
2017-07-01
slince91

Spike是一个可以用来将你的内网服务暴露在公网的使用php开发的快速的反向代理,基于ReactPHP,采用IO多路复用模型。

配置服务端

使用Spike的前提是你需要有一台公网可访问的机器,这里假设你已经有一台机器.你可以使用下面两种方式开启服务端。

基于默认参数

执行下面命令以开启服务

$ spiked --address=127.0.0.1:8088

上述命令可以创建一个基本服务,如果你需要定制更多信息可以基于配置文件服务

基于配置文件

  • 初始化一个配置文件

执行下面命令创建文件

$ spiked init --dir=/home/conf --format=json

支持yaml,xml,ini,json四种格式的配置文件,默认使用json,使用下面命令查看帮助

$ spiked init -h
  • 打开配置文件,修改相关参数

  • 基于配置文件开启服务

 $ spiked --config=/home/conf/spiked.json

配置本地客户端

开启客户端需要先创建配置文件

  • 初始化一个配置文件

执行下面命令创建文件

$ spike init --dir=/home/conf --format=json

使用下面命令查看帮助

$ spike init -h
  • 打开配置文件,修改相关参数

  • 基于配置文件开启服务

$ spike --config=/home/conf/spike.json

定义隧道

隧道的定义只在客户端,服务端不需要做任何配置,从而达到最简化配置。

目前支持http与tcp两种隧道

打开本地配置文件"spike.json", 修改tunnel一项;

  • 添加http隧道

{
    "protocol": "http",
    "serverPort": 8086,
    "proxyHosts": {
        "www.foo.com": "127.0.0.1:80",
        "www.bar.com": "192.168.1.101:8080"
    }
}

启动客户端,访问 "http://www.foo.com:8086" , 服务将会被代理到本地"127.0.0.1:80"; 注意此处需要把 "www.foo.com" 解析到服务端所在机器上

  • 添加tcp隧道

基于tcp协议的应用层协议都可使用本隧道代理,如:mysql,redis,ssh...等;下面是代理mysql服务的例子

{
    "protocol": "tcp",
    "serverPort": 8087,
    "host": "127.0.0.1:3306"
}

执行下面命令访问本地mysql服务:

$ mysql -h 服务器地址 -P 8087

客户端身份认证

基于默认参数开启的服务端没有开启客户端身份认证服务,如果需要开启该服务则只能基于配置文件去启动服务端.

  • 服务端启用认证服务

打开"spiked.json"文件,修改auth一项信息,然后重启服务

目前只支持简单的用户名密码认证方式,更多的认证方式后面会陆续加入.

  • 修改客户端身份信息

打开本地"spike.json"文件,修改auth一栏信息,与服务端配置保持一致即可

日志配置

默认开启屏幕输出与文件两种形式的日志;前者会打印到控制台;后者会写入到指定文件;默认日志等级是"info",此项信息可以通过 修改配置文件"log"一项调整;

日志是同步读写的,所以提升日志等级减少日志IO有助于提升服务的性能

License

The MIT license. See MIT

加载中

评论(0)

暂无评论

基于纯 PHP 实现的内网穿透应用 Spike 0.1.0 发布

Spike是一个可以用来将你的内网服务暴露在公网的快速的反向代理,基于ReactPHP,采用IO多路复用模型。 在此版本之后将抛弃以前 beta 的版本命名规则。0.1.0 是个重构版本,主要改动如下: Fi...

06/19 10:22

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

用slf4j+logback实现多功能日志解决方案

用slf4j+logback实现多功能日志解决方案 --- 转 大家都知道slf4j是原来log4j的作者写的一个新的日志组件,意思是简单日志门面接口,可以跟其他日志组件配合使用,常用的配合是slf4j+logback...

2016/04/21 16:55
164
1
SVN Maven SCM 跟 release 插件的Spike

Spike SVN Maven SCM plugin

2014/01/09 17:00
5.4K
1
demo

Excel::load($filePath, function ($reader) { $reader = $reader->getSheet(7);//获取excel的第1张表 $results = $reader->toArray();//获取表中的数据 vpd($results); });...

06/07 14:47
5
0
Apache commons ftp API 的Spike

Apache FTPServer 跟 commons.net.ftp 的简单使用,单元测试

2013/12/13 12:23
681
0
ElastAlert简介

背景 对于使用ELK作为对应的日志平台的同学来说还需要一个简单的告警机制 https://elastalert.readthedocs.io/en/latest/ ElastAlert is a simple framework for alerting on anomalies, spi...

08/23 12:41
24
0
ubuntu-ln命令

~ sudo ln -s /home/spike/Downloads/redis/src/redis-server /usr/local/bin/redis-server // 源文件 复制到 目标文件 ,这两个文件目录都必须是全路径,不能包含相对路径...

06/20 16:04
1
0
Scrum(Agile)

Agile Development is a software methodology, whereas Scrum is one of process frameworks that follows Agile...

2016/05/06 18:21
5
2
MySQL 5.7 内部临时表

本文研究了在没有写查询的情况下,InnoDB行插入时,因内部临时表的问题而发生性能尖刺的情形。 In this blog post, I investigate a case of spiking InnoDB Rows inserted in the absence o...

07/26 15:29
5
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部