An open API service indexing awesome lists of open source software.

https://github.com/slince/spike

:mega: A fast reverse proxy written in PHP that helps to expose local services to the internet
https://github.com/slince/spike

expose-localhost http-tunnel nat proxy reverse-proxy spike tcp-tunnel tunnel

Last synced: 6 months ago
JSON representation

:mega: A fast reverse proxy written in PHP that helps to expose local services to the internet

Awesome Lists containing this project

README

          





Software License


Build Status


Coverage Status


Latest Stable Version


Scrutinizer

Spike是一个可以用来将你的内网服务暴露在公网的快速的反向代理,基于[ReactPHP](https://github.com/reactphp),采用IO多路复用模型。

## 安装

通过 composer 安装

```bash
composer global require slince/spike
```

> 服务器与本地都需要执行此命令安装

## 原理图



## 配置服务端

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

### 基于默认参数

执行下面命令以开启服务

```bash
$ spiked --address=127.0.0.1:8088
```
上述命令可以创建一个基本服务,如果你需要定制更多信息可以基于配置文件服务

### 基于配置文件

- 初始化一个配置文件

执行下面命令创建文件

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

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

```bash
$ spiked init -h
```

- 打开配置文件,修改相关参数

- 基于配置文件开启服务

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

## 配置本地客户端

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

- 初始化一个配置文件

执行下面命令创建文件

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

使用下面命令查看帮助

```bash
$ spike init -h
```

- 打开配置文件,修改相关参数

- 基于配置文件开启服务

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

## 定义隧道

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

> 目前支持http与tcp两种隧道

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

- 添加http隧道

```json
{
"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服务的例子

```json
{
"protocol": "tcp",
"serverPort": 8087,
"host": "127.0.0.1:3306"
}
```
执行下面命令访问本地mysql服务:

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

## 客户端身份认证

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

- 服务端启用认证服务

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

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

- 修改客户端身份信息

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

## 日志配置

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

## 查看所有命令

```bash
$ 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
```

## Changelog

查看 [CHANGELOG.md](./CHANGELOG.md)

## License

The MIT license. See [MIT](https://opensource.org/licenses/MIT)