slince / spike
一个快速的逆向代理,帮助您将本地服务暴露到互联网上
Requires
- php: >=5.6.0
- doctrine/collections: ^1.0
- guzzlehttp/psr7: ^1.0
- monolog/monolog: ^1.0
- react/promise: ^2.6
- react/socket: ^0.8
- react/stream: ^0.7.0
- slince/config: ^1.0
- slince/event-dispatcher: ^2.0
- symfony/console: ^2.0|^3.0|^4.0
Requires (Dev)
- phpunit/phpunit: ^5.0|^6.0
This package is auto-updated.
Last update: 2024-08-25 23:01:30 UTC
README
Spike 是一个基于 ReactPHP 的快速逆向代理,可以帮助您将本地服务暴露到互联网上。
安装
通过 composer 安装
composer global require slince/spike
服务器和本地机器都需要安装此软件。
示意图
配置服务器
需要一台可以访问的公网机器。假设已经准备好了。启动服务器有两种方式
基于默认配置
使用以下命令启动服务器
$ spiked --address=127.0.0.1:8088
上述命令可以创建一个基本服务。如果您想自定义更多信息,应基于配置文件启动服务器。
基于配置文件。
- 创建配置文件
执行以下命令来创建它。
$ spiked init --dir=/home/conf --format=json
支持 Yaml、Xml、Ini 和 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 隧道
打开客户端配置文件并修改 "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" 解析到服务器 IP。
- 添加 TCP 隧道
基于 tcp 的服务可以使用隧道,例如:mysql、redis、ssh 等;以下是一个代理 mysql 服务的示例
{ "protocol": "tcp", "serverPort": 8087, "host": "127.0.0.1:3306" }
执行以下命令来访问本地的 mysql 服务。
$ mysql -h SERVER IP -P 8087
客户端认证
默认情况下,服务器不启用认证。如果您想启用此功能,应基于配置文件启动服务器。
- 启用认证
打开服务器配置文件并修改 "auth" 参数,然后重启服务。
目前仅支持简单的用户名密码认证,以后将添加更多认证方法。
- 修改客户端身份信息
打开客户端配置文件并修改 "auth" 参数。保持与服务器相同的参数。
配置日志
默认情况下打开控制台和文件两种日志形式;第一种将日志打印到控制台;第二种将所有日志写入指定的文件;默认日志级别为 "info";您可以在配置文件中调整此设置。
列出命令
$ spike list _____ _____ _ _ _ _____ / ___/ | _ \ | | | | / / | ____| | |___ | |_| | | | | |/ / | |__ \___ \ | ___/ | | | |\ \ | __| ___| | | | | | | | \ \ | |___ /_____/ |_| |_| |_| \_\ |_____| Spike Client 0.0.1 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands: help Displays help for a command init Create a configuration file in the specified directory list Lists commands list-proxy Lists all supported proxy hosts by the client
变更日志
许可证
MIT 许可证。见 MIT