Spike基于 ReactPHP 的反向代理
Spike是一個可以用來將你的內(nèi)網(wǎng)服務(wù)暴露在公網(wǎng)的使用php開發(fā)的快速的反向代理,基于ReactPHP,采用IO多路復用模型。
配置服務(wù)端
使用Spike的前提是你需要有一臺公網(wǎng)可訪問的機器,這里假設(shè)你已經(jīng)有一臺機器.你可以使用下面兩種方式開啟服務(wù)端。
基于默認參數(shù)
執(zhí)行下面命令以開啟服務(wù)
$ spiked --address=127.0.0.1:8088
上述命令可以創(chuàng)建一個基本服務(wù),如果你需要定制更多信息可以基于配置文件服務(wù)
基于配置文件
-
初始化一個配置文件
執(zhí)行下面命令創(chuàng)建文件
$ spiked init --dir=/home/conf --format=json
支持yaml,xml,ini,json四種格式的配置文件,默認使用json,使用下面命令查看幫助
$ spiked init -h
-
打開配置文件,修改相關(guān)參數(shù)
-
基于配置文件開啟服務(wù)
$ spiked --config=/home/conf/spiked.json
配置本地客戶端
開啟客戶端需要先創(chuàng)建配置文件
-
初始化一個配置文件
執(zhí)行下面命令創(chuàng)建文件
$ spike init --dir=/home/conf --format=json
使用下面命令查看幫助
$ spike init -h
-
打開配置文件,修改相關(guān)參數(shù)
-
基于配置文件開啟服務(wù)
$ spike --config=/home/conf/spike.json
定義隧道
隧道的定義只在客戶端,服務(wù)端不需要做任何配置,從而達到最簡化配置。
目前支持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" , 服務(wù)將會被代理到本地"127.0.0.1:80"; 注意此處需要把 "www.foo.com" 解析到服務(wù)端所在機器上
-
添加tcp隧道
基于tcp協(xié)議的應用層協(xié)議都可使用本隧道代理,如:mysql,redis,ssh...等;下面是代理mysql服務(wù)的例子
{
"protocol": "tcp",
"serverPort": 8087,
"host": "127.0.0.1:3306"
}
執(zhí)行下面命令訪問本地mysql服務(wù):
$ mysql -h 服務(wù)器地址 -P 8087
客戶端身份認證
基于默認參數(shù)開啟的服務(wù)端沒有開啟客戶端身份認證服務(wù),如果需要開啟該服務(wù)則只能基于配置文件去啟動服務(wù)端.
-
服務(wù)端啟用認證服務(wù)
打開"spiked.json"文件,修改auth一項信息,然后重啟服務(wù)
目前只支持簡單的用戶名密碼認證方式,更多的認證方式后面會陸續(xù)加入.
-
修改客戶端身份信息
打開本地"spike.json"文件,修改auth一欄信息,與服務(wù)端配置保持一致即可
日志配置
默認開啟屏幕輸出與文件兩種形式的日志;前者會打印到控制臺;后者會寫入到指定文件;默認日志等級是"info",此項信息可以通過 修改配置文件"log"一項調(diào)整;
日志是同步讀寫的,所以提升日志等級減少日志IO有助于提升服務(wù)的性能
License
The MIT license. See MIT
