Merge pull request #1 from snail007/master

sync
pull/488/head
masterZSH 2 years ago committed by GitHub
commit 1855454558
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,21 +1,28 @@
## Advertisement
<a href="https://www.huobi.bi/zh-cn/topic/invited/?invite_code=qpi54">
<img width="auto" height="100" src="/doc/images/zanzhu-1.png"/>
## IP Proxies Recommendation
<a href="https://brightdata.grsm.io/9gnzdzgpvtmo">
<img width="auto" height="100" src="https://mirrors.host900.com/https://raw.githubusercontent.com/snail007/goproxy/master/doc/images/brightdata.png"/>
</a>
## GOPROXY Introduction
<img src="https://cdn.jsdelivr.net/gh/snail007/goproxy@master/doc/images/logo.jpg" width="200" height="auto"/>
The GoProxy is a high-performance http proxy, https proxy, socks5 proxy, ss proxy, websocket proxies, tcp proxies, udp proxies, game shield, game proxies. Support forward proxies, reverse proxy, transparent proxy, internet nat proxies, https proxy load balancing, http proxy load balancing , socks5 proxies load balancing, socket proxy load balancing, ss proxy load balancing, TCP / UDP port mapping, SSH transit, TLS encrypted transmission, protocol conversion, anti-pollution DNS proxy, API authentication, speed limit, limit connection. Reverse proxies to help you expose a local server behind a NAT or firewall to the internet so that you or your visitors can access it directly and easily.
<div align="center">
<img src="https://mirrors.host900.com/https://raw.githubusercontent.com/snail007/goproxy/master/doc/images/logo.jpg" width="500" height="auto"/>
[![stable](https://img.shields.io/badge/stable-stable-green.svg)](https://github.com/snail007/goproxy/) [![license](https://img.shields.io/github/license/snail007/goproxy.svg?style=plastic)]() [![download_count](https://img.shields.io/github/downloads/snail007/goproxy/total.svg?style=plastic)](https://github.com/snail007/goproxy/releases) [![download](https://img.shields.io/github/release/snail007/goproxy.svg?style=plastic)](https://github.com/snail007/goproxy/releases)
---
[![stable](https://img.shields.io/badge/stable-stable-green.svg)](https://github.com/snail007/goproxy/) [![license](https://img.shields.io/github/license/snail007/goproxy.svg?style=plastic)]() [![download_count](https://img.shields.io/github/downloads/snail007/goproxy/total.svg?style=plastic)](https://github.com/snail007/goproxy/releases) [![download](https://img.shields.io/github/release/snail007/goproxy.svg?style=plastic)](https://github.com/snail007/goproxy/releases)
The GoProxy is a high-performance http proxy, https proxy, socks5 proxy, ss proxy, websocket proxies, tcp proxies, udp proxies, game shield, game proxies. Support forward proxies, reverse proxy, transparent proxy, internet nat proxies, https proxy load balancing, http proxy load balancing , socks5 proxies load balancing, socket proxy load balancing, ss proxy load balancing, TCP / UDP port mapping, SSH transit, TLS encrypted transmission, protocol conversion, anti-pollution DNS proxy, API authentication, speed limit, limit connection. Reverse proxies to help you expose a local server behind a NAT or firewall to the internet so that you or your visitors can access it directly and easily.
</div>
---
## 中文用户请看 *中文说明*,中文与英文内容的安装等资源链接是不一样的,谢谢合作!
### [点击我观看视频教程](https://space.bilibili.com/472844633)
- [使用必读](https://github.com/snail007/goproxy/blob/master/README_ZH.md)
- [参考手册](https://snail007.host900.com/goproxy/manual/zh/)
- [中文说明](https://github.com/snail007/goproxy/blob/master/README_ZH.md)
- [使用手册](https://snail007.host900.com/goproxy/manual/zh/)
- [下载地址](https://github.com/snail007/goproxy/releases)
- [Download](https://github.com/snail007/goproxy/releases)
- [Desktop Edition](https://github.com/snail007/proxy_admin_free)
@ -36,7 +43,7 @@ And ProxyAdmin is a powerful web console of snail007/goproxy .
- Communication encryption, if the program is not a level one proxies, and the upper level proxies is also the program, then the communication between the upper level proxies and the upper level proxies can be encrypted, and the underlying tls high-intensity encryption is used, and the security is featureless.
- Smart HTTP, SOCKS5 proxy, will automatically determine whether the visited website is blocked. If it is blocked, it will use the upstream proxies (provided that the upstream proxies is configured) to access the website; if the visited website is not blocked, in order to speed up the access, the proxies will Direct access to the website without using a upstream proxies.
- Domain name black and white list, more free to control the way the website is accessed.
- Cross-platform, whether you are widows, linux, mac, or even raspberry pie, you can run the proxy very well.
- Cross-platform, whether you are windows, linux, mac, or even raspberry pie, you can run the proxy very well.
- Multi-protocol support, support for HTTP(S), TCP, UDP, Websocket, SOCKS5 proxy.
- TCP/UDP port forwarding.
- Support intranet penetration, protocol supports TCP and UDP.
@ -140,6 +147,38 @@ chmod +x install_commercial.sh
./install_commercial.sh
```
## UPDATE
### Linux
```shell
proxy update
```
Force update.
```shell
proxy update -f
```
### Windows
For example `proxy` placed in `c:\gp\proxy`.
```bat
c:\
cd gp
proxy update
```
Force update.
```shell
c:\
cd gp
proxy update -f
```
## TODO
- http,socks proxy multiple upstream load balancing?
- http(s) proxy to increase pac support?
@ -149,7 +188,7 @@ chmod +x install_commercial.sh
Proxy is licensed under GPLv3 license.
## Contact
Official QQ exchange group: 42805407
Official QQ exchange group: 608062193
## Donation
If the proxy helps you solve a lot of problems, you can better support the proxy through the donation below.
@ -171,6 +210,11 @@ If you have customized, business needs, please send an email to `arraykeys@gmail
## Goproxy Manual
### IP Proxies Recommendation
<a href="https://brightdata.grsm.io/9gnzdzgpvtmo">
<img width="auto" height="100" src="https://mirrors.host900.com/https://raw.githubusercontent.com/snail007/goproxy/master/doc/images/brightdata.png"/>
</a>
## How to Install
### 1. Linux Install
@ -275,7 +319,7 @@ For example: `proxy http -p ":9090" --forever --log proxy.log --daemon`
### 8. Security advice
When the VPS is behind the nat device, the vps network card IP is the intranet IP. At this time, you can use the -g parameter to add the vps external network ip to prevent the infinite loop.
When the VPS is behind the nat device, the vps network interface IP is the intranet IP. At this time, you can use the -g parameter to add the vps external network ip to prevent the infinite loop.
Suppose your vps external network ip is 23.23.23.23. The following command sets 23.23.23.23 with the -g parameter.
@ -670,6 +714,27 @@ The `--bind-listen` parameter can be used to open the client connection with the
`proxy http -t tcp -p 2.2.2.2:33080 --bind-listen`
#### Flexible Outgoing IP
Although the above `--bind-listen` parameter can specify the outgoing IP, the `entry IP` and the `outgoing IP` cannot be referenced artificially. If you want the ingress IP and the egress IP to be different, you can use the `--bind-ip` parameter, format: `IP:port`, for example: `1.1.1.1:8080`, `[2000:0:0:0:0 :0:0:1]:8080`. For multiple binding requirements, the `--bind-ip` parameter can be repeated.
For example, this machine has IP `5.5.5.5`, `6.6.6.6`, and monitors two ports `8888` and `7777`, the command is as follows:
`Proxy tcp -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888 -T tcp -P 2.2.2.2:3322`
Then the client access port `7777`, the outgoing IP is `5.5.5.5`, access port `8888`, the outgoing IP is `6.6.6.6`, if both `--bind-ip` and `--bind- are set at the same time listen`,`--bind-ip` has higher priority.
s
In addition, the `IP` part of the `--bind-ip` parameter supports specifying the `network interface name`, `wildcards`, and more than one can be specified. The detailed description is as follows:
- Specify the network interface name, such as: `--bind-ip eth0:7777`, and then the client accesses the `7777` port, and the egress IP is the IP of the eth0 network interface.
- The network interface name supports wildcards, such as: `--bind-ip eth0.*:7777`, then the client accesses the port `7777`, and the egress IP is randomly selected from the IP of the network interface starting with `eth0.`.
- IP supports wildcards, such as: `--bind-ip 192.168.?.*:777`, then the client accesses the `7777` port, the outgoing IP is all the IPs of the machine, and matches the IP of `192.168.?.*` A randomly selected one.
- It can also be several combinations of network interface name and IP, and several selective divisions using half-width, such as: `-bind-ip pppoe??,192.168.?.*:7777`, and then the client accesses the `7777` port , The outgoing IP is the machine's network interface name matching `pppoe??`
It is randomly selected from the IP matching `192.168.?.*` in the machine IP.
- The wildcard character `*` represents 0 to any character, `? `Represents 1 character.
- If the IP of the network interface changes, it will take effect in real time.
- You can use the `--bind-refresh` parameter to specify the interval to refresh the local network interface information, the default is `5`, the unit is second.
### 1.17 Certificate parameters use base64 data
By default, the -C, -K parameter is the path to the crt certificate and the key file.
@ -678,7 +743,7 @@ If it is the beginning of base64://, then the latter data is considered to be ba
### 1.18 Intelligent mode
Intelligent mode setting, can be one of intelligent|direct|parent.
The default is: intelligent.
The default is: parent.
The meaning of each value is as follows:
`--intelligent=direct`, the targets in the blocked are not directly connected.
`--intelligent=parent`, the target that is not in the direct is going to the higher level.
@ -778,6 +843,28 @@ When the TCP proxy is a superior type (parameter: -T) is tcp, it supports the sp
`proxy tcp -p ":33080" -T tcp -P" 192.168.22.33:22" -B`
#### Flexible Outgoing IP
Although the above `--bind-listen` parameter can specify the outgoing IP, the `entry IP` and the ` outgoing IP` cannot be referenced artificially. If you want the ingress IP to be different from the egress IP, you can use the `--bind-ip` parameter, format: `IP:port`, for example: `1.1.1.1:8080`
, `[2000:0:0:0:0:0:0:1]:8080`. For multiple binding requirements, you can repeat the `--bind-ip` parameter identification.
For example, this machine has IP `5.5.5.5`, `6.6.6.6`, and monitors two ports `8888` and `7777`, the command is as follows:
`Proxy tcp -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888 -T tcp -P 2.2.2.2:3322`
Then the client access port `7777`, the outgoing IP is `5.5.5.5`, access port `8888`, the outgoing IP is `6.6.6.6`, if both `--bind-ip` and `--bind- are set at the same time listen`,`--bind-ip` has higher priority.
In addition, the `IP` part of the `--bind-ip` parameter supports specifying the `network interface name`, `wildcards`, and more than one can be specified. The detailed description is as follows:
- Specify the network interface name, such as: `--bind-ip eth0:7777`, then the client accesses the `7777` port, and the egress IP is the IP of the eth0 network interface.
- The network interface name supports wildcards, for example: `--bind-ip eth0.*:7777`, then the client accesses the `7777` port, and the egress IP is a randomly selected one of the network interface IPs starting with `eth0.`.
- IP supports wildcards, such as: `--bind-ip 192.168.?.*:7777`, then the client accesses the `7777` port, and the exit IP is all the IPs of the machine, matching the IP of `192.168.?.*` A randomly selected one.
- It can also be multiple combinations of network interface name and IP, separated by half-width commas, such as: `--bind-ip pppoe??,192.168.?.*:7777`, then the client accesses the port `7777`, The outgoing IP is the machine's network interface name matching `pppoe??`
It is a randomly selected one among all IPs of the machine that matches `192.168.?.*`.
- The wildcard character `*` represents 0 to any number of characters, and `?` represents 1 character.
- If the IP of the network interface changes, it will take effect in real time.
- You can use the `--bind-refresh` parameter to specify the interval to refresh the local network interface information, the default is `5`, the unit is second.
### 2.8 Speed limit, connections limit
The parameter `--max-conns` can limit the maximum number of connections per port.
@ -1280,6 +1367,28 @@ The `--bind-listen` parameter can be used to open the client connection with the
`proxy socks -t tcp -p 2.2.2.2:33080 --bind-listen`
#### Flexible Outgoing IP
Although the above `--bind-listen` parameter can specify the outgoing IP, the `entry IP` and ` outgoing IP` cannot be interfered by humans. If you want the ingress IP to be different from the egress IP, you can use the `--bind-ip` parameter, format: `IP:port`, for example: `1.1.1.1:8080`
, `[2000:0:0:0:0:0:0:1]:8080`. For multiple binding requirements, you can repeat the `--bind-ip` parameter.
For example, the machine has IP `5.5.5.5`, `6.6.6.6`, and monitors two ports `8888` and `7777`, the command is as follows:
`proxy socks -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888`
Then the client access port `7777`, the outgoing IP is `5.5.5.5`, access port `8888`, the outgoing IP is `6.6.6.6`, if both `--bind-ip` and `--bind- are set at the same time listen`,`--bind-ip` has higher priority.
In addition, the `IP` part of the `--bind-ip` parameter supports specifying the `network interface name`, `wildcards`, and more than one. The details are as follows:
- Specify the network interface name, such as: `--bind-ip eth0:7777`, then the client accesses the `7777` port, and the egress IP is the IP of the eth0 network interface.
- The network interface name supports wildcards, for example: `--bind-ip eth0.*:7777`, then the client accesses the `7777` port, and the egress IP is a randomly selected one of the network interface IPs starting with `eth0.`.
- IP supports wildcards, such as: `--bind-ip 192.168.?.*:7777`, then the client accesses the `7777` port, and the exit IP is all the IPs of the machine, matching the IP of `192.168.?.*` A randomly selected one.
- It can also be multiple combinations of network interface name and IP, separated by half-width commas, such as: `--bind-ip pppoe??,192.168.?.*:7777`, then the client accesses the port `7777`, The outgoing IP is the machine's network interface name matching `pppoe??`
It is a randomly selected one among all IPs of the machine that matches `192.168.?.*`.
- The wildcard character `*` represents 0 to any number of characters, and `?` represents 1 character.
- If the IP of the network interface changes, it will take effect in real time.
- You can use the `--bind-refresh` parameter to specify the interval to refresh the local network interface information, the default is `5`, the unit is second.
### 5.15 Cascade Certification
SOCKS5 supports cascading authentication, and -A can set upstream authentication information.
@ -1301,7 +1410,7 @@ If it is the beginning of base64://, then the latter data is considered to be ba
### 5.17 Intelligent mode
Intelligent mode setting, can be one of intelligent|direct|parent.
The default is: intelligent.
The default is: parent.
The meaning of each value is as follows:
`--intelligent=direct`, the targets in the blocked are not directly connected.
`--intelligent=parent`, the target that is not in the direct is going to the higher level.
@ -1543,6 +1652,28 @@ The `--bind-listen` parameter can be used to open the client connection with the
`proxy sps -S socks -P 2.2.2.2:33080 -T tcp -Z password -l 100K -t tcp --bind-listen -p :33080`
#### Flexible Outgoing IP
Although the above `--bind-listen` parameter can specify the outgoing IP, the `entry IP` and ` outgoing IP` cannot be interfered by humans. If you want the ingress IP to be different from the egress IP, you can use the `--bind-ip` parameter, format: `IP:port`, for example: `1.1.1.1:8080`
, `[2000:0:0:0:0:0:0:1]:8080`. For multiple binding requirements, you can repeat the `--bind-ip` parameter.
For example, the machine has IP `5.5.5.5`, `6.6.6.6`, and monitors two ports `8888` and `7777`, the command is as follows:
`proxy sps -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888`
Then the client access port `7777`, the outgoing IP is `5.5.5.5`, access port `8888`, the outgoing IP is `6.6.6.6`, if both `--bind-ip` and `--bind- are set at the same time listen`,`--bind-ip` has higher priority.
In addition, the `IP` part of the `--bind-ip` parameter supports specifying the `network interface name`, `wildcards`, and more than one. The details are as follows:
- Specify the network interface name, such as: `--bind-ip eth0:7777`, then the client accesses the `7777` port, and the egress IP is the IP of the eth0 network interface.
- The network interface name supports wildcards, for example: `--bind-ip eth0.*:7777`, then the client accesses the `7777` port, and the egress IP is a randomly selected one of the network interface IPs starting with `eth0.`.
- IP supports wildcards, such as: `--bind-ip 192.168.?.*:7777`, then the client accesses the `7777` port, and the exit IP is all the IPs of the machine, matching the IP of `192.168.?.*` A randomly selected one.
- It can also be multiple combinations of network interface name and IP, separated by half-width commas, such as: `--bind-ip pppoe??,192.168.?.*:7777`, then the client accesses the port `7777`, The outgoing IP is the machine's network interface name matching `pppoe??`
It is a randomly selected one among all IPs of the machine that matches `192.168.?.*`.
- The wildcard character `*` represents 0 to any number of characters, and `?` represents 1 character.
- If the IP of the network interface changes, it will take effect in real time.
- You can use the `--bind-refresh` parameter to specify the interval to refresh the local network interface information, the default is `5`, the unit is second.
### 6.13 Certificate parameters use base64 data
By default, the -C, -K parameter is the path to the crt certificate and the key file.
@ -1760,7 +1891,6 @@ Local execution:
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
#### 8.2.8 Custom encrypted SOCKS5 upstream agent
 
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
`proxy socks -t kcp -p :33080 -z password`
@ -1832,17 +1962,19 @@ if($ok){
header("ipconns:2000");
header("userrate:3000");
header("iprate:8000");
header("UPSTREAM:http://127.0.0.1:3500?parent-type=tcp");
header("outgoing:http://127.0.0.1:3500?parent-type=tcp");
header("outgoing:1.1.1.1");
header("HTTP/1.1 204 No Content");
}
```
#### Explanation
Userconns: The maximum number of connections for the user, not limited to 0 or not set this header.
Ipcons: The maximum number of connections for the user IP, not limited to 0 or not set this header.
Userrate: User's single TCP connection rate limit, in bytes/second, is not limited to 0 or does not set this header.
Iprate: The single TCP connection rate limit of the user IP, in bytes/second, not limited to 0 or not set this header.
Upstream: The upstream used, not empty, or not set this header.
userconns: The maximum number of connections for the user, not limited to 0 or not set this header.
ipcons: The maximum number of connections for the user IP, not limited to 0 or not set this header.
userrate: User's single TCP connection rate limit, in bytes/second, is not limited to 0 or does not set this header.
iprate: The single TCP connection rate limit of the user IP, in bytes/second, not limited to 0 or not set this header.
upstream: The upstream used, not empty, or not set this header.
outgoing: The outgoing ipthis option only working which upstream is empty. And the IP must belong to the machine running proxy。
#### Tips
1. By default, `--auth-url` is required to provide the user name and password. If you do not need the client to provide the username and password, and authenticate, you can add `--auth-nouser`. The visit will still access the authentication address `--auth-url` for authentication. Only the $user authentication username and the $pass authentication password received in the php interface are empty when client didn't send username and password.
@ -1864,15 +1996,17 @@ Explanation: `http://`,`socks5://` is fixed, `127.0.0.1:3100` is the address of
2. When `sps` is 1.
Upstream supports socks5, http(s) proxy, support authentication, format: `protocol://a:b@2.2.2.2:33080?argk=argv`, please refer to SPS chapter for details, **multiple upstreams** , the description of the `-P` parameter.
3. Parameters, `?` followed by `argk=argv` are parameters: parameter name = parameter value, multiple parameters are connected with `&`.
All the supported parameters are as follows, and the meaning of the command line with the same name is the same.
1. parent-type : upper-level transport type, support tcp, tls, ws, wss
2. parent-ws-method: The encryption method of the upper-level ws transmission type, the supported value is the same as the value range supported by the command line.
3. parent-ws-password: The upper-level ws transmission type encryption password, the alphanumeric password
4. parent-tls-single : Whether the upper-level tls transport type is a one-way tls, which can be: true | false
5. timeout : timeout for establishing tcp connection, number, in milliseconds
6. ca : The base64-encoded string of the upper-level tls transport type ca certificate file.
7. cert : The base64 encoded string of the higher level tls transport type certificate file.
8. key : The base64 encoded string of the higher-level tls transport type certificate key file.
All the supported parameters are as follows, and the meaning of the command line with the same name is the same.
1. parent-type : upper-level transport type, support tcp, tls, ws, wss
2. parent-ws-method: The encryption method of the upper-level ws transmission type, the supported value is the same as the value range supported by the command line.
3. parent-ws-password: The upper-level ws transmission type encryption password, the alphanumeric password
4. parent-tls-single : Whether the upper-level tls transport type is a one-way tls, which can be: true | false
5. timeout : timeout for establishing tcp connection, number, in milliseconds
6. ca : The base64-encoded string of the upper-level tls transport type ca certificate file.
7. cert : The base64 encoded string of the higher level tls transport type certificate file.
8. key : The base64 encoded string of the higher-level tls transport type certificate key file.
9. luminati:if upstram is luminati proxiesvalue can be: true or false。
### Traffic report / Traffic limit / Traffic statistics
@ -1894,12 +2028,15 @@ The following is a complete URL request example:
`http://127.0.0.1:33088/user/traffic?bytes=337&client_addr=127.0.0.1%3A51035&id=http&server_addr =127.0.0.1%3A33088&target_addr=myip.ipip.net%3A80&username=a`
Request parameter description:
id: service id flag.
server_addr: proxies's address requested by the client, format: IP: port.
client_addr: client address, format: IP: port.
target_addr: target address, format: "IP: port", when tcp / udp proxy, this is empty.
User name: proxy authentication user name, this is empty when tcp / udp proxy.
bytes: the number of traffic bytes used by the user.
id: service id flag.
server_addr: proxies's address requested by the client, format: IP: port.
client_addr: client address, format: IP: port.
target_addr: target address, format: "IP: port", when tcp / udp proxy, this is empty.
User name: proxy authentication user name, this is empty when tcp / udp proxy.
bytes: the number of traffic bytes used by the user.
out_local_addr: outgoing tcp connection's local address,format: IP: port.
out_remote_addr: outgoing tcp connection's remote address,format: IP: port.
upstream: upstream used by outgoing tcp connection, if none upstream be used, it's empty.
#### Tips
@ -2034,4 +2171,25 @@ Client service parameters can use placeholders: `{AGENT_ID}` to refer to the age
For example, client service parameters:
`client -T tcp -P 1.1.1.1:30000 --k {AGENT_ID}`
`client -T tcp -P 1.1.1.1:30000 --k {AGENT_ID}`
## 12. http, https website reverse proxy
The proxy can reverse proxy http and https websites.
The supported features are as follows:
- http and https are converted to each other.
- multiple upstream.
- upstream load balance.
- upstream high available.
- path mapping.
- path protection.
- alias names of bindings.
Example, configure file:`rhttp.toml`。
```shell
proxy rhttp -c rhttp.toml
```
For detail usage, please refer to the configuration file [rhttp.toml](https://github.com/snail007/goproxy/blob/master/rhttp.toml), which has a complete configuration description.

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

@ -1,3 +1,8 @@
### IP Proxies Recommendation
<a href="https://brightdata.grsm.io/9gnzdzgpvtmo">
<img width="auto" height="100" src="https://mirrors.host900.com/https://raw.githubusercontent.com/snail007/goproxy/master/doc/images/brightdata.png"/>
</a>
## How to Install
### 1. Linux Install
@ -102,7 +107,7 @@ For example: `proxy http -p ":9090" --forever --log proxy.log --daemon`
### 8. Security advice
When the VPS is behind the nat device, the vps network card IP is the intranet IP. At this time, you can use the -g parameter to add the vps external network ip to prevent the infinite loop.
When the VPS is behind the nat device, the vps network interface IP is the intranet IP. At this time, you can use the -g parameter to add the vps external network ip to prevent the infinite loop.
Suppose your vps external network ip is 23.23.23.23. The following command sets 23.23.23.23 with the -g parameter.
@ -497,6 +502,27 @@ The `--bind-listen` parameter can be used to open the client connection with the
`proxy http -t tcp -p 2.2.2.2:33080 --bind-listen`
#### Flexible Outgoing IP
Although the above `--bind-listen` parameter can specify the outgoing IP, the `entry IP` and the `outgoing IP` cannot be referenced artificially. If you want the ingress IP and the egress IP to be different, you can use the `--bind-ip` parameter, format: `IP:port`, for example: `1.1.1.1:8080`, `[2000:0:0:0:0 :0:0:1]:8080`. For multiple binding requirements, the `--bind-ip` parameter can be repeated.
For example, this machine has IP `5.5.5.5`, `6.6.6.6`, and monitors two ports `8888` and `7777`, the command is as follows:
`Proxy tcp -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888 -T tcp -P 2.2.2.2:3322`
Then the client access port `7777`, the outgoing IP is `5.5.5.5`, access port `8888`, the outgoing IP is `6.6.6.6`, if both `--bind-ip` and `--bind- are set at the same time listen`,`--bind-ip` has higher priority.
s
In addition, the `IP` part of the `--bind-ip` parameter supports specifying the `network interface name`, `wildcards`, and more than one can be specified. The detailed description is as follows:
- Specify the network interface name, such as: `--bind-ip eth0:7777`, and then the client accesses the `7777` port, and the egress IP is the IP of the eth0 network interface.
- The network interface name supports wildcards, such as: `--bind-ip eth0.*:7777`, then the client accesses the port `7777`, and the egress IP is randomly selected from the IP of the network interface starting with `eth0.`.
- IP supports wildcards, such as: `--bind-ip 192.168.?.*:777`, then the client accesses the `7777` port, the outgoing IP is all the IPs of the machine, and matches the IP of `192.168.?.*` A randomly selected one.
- It can also be several combinations of network interface name and IP, and several selective divisions using half-width, such as: `-bind-ip pppoe??,192.168.?.*:7777`, and then the client accesses the `7777` port , The outgoing IP is the machine's network interface name matching `pppoe??`
It is randomly selected from the IP matching `192.168.?.*` in the machine IP.
- The wildcard character `*` represents 0 to any character, `? `Represents 1 character.
- If the IP of the network interface changes, it will take effect in real time.
- You can use the `--bind-refresh` parameter to specify the interval to refresh the local network interface information, the default is `5`, the unit is second.
### 1.17 Certificate parameters use base64 data
By default, the -C, -K parameter is the path to the crt certificate and the key file.
@ -505,7 +531,7 @@ If it is the beginning of base64://, then the latter data is considered to be ba
### 1.18 Intelligent mode
Intelligent mode setting, can be one of intelligent|direct|parent.
The default is: intelligent.
The default is: parent.
The meaning of each value is as follows:
`--intelligent=direct`, the targets in the blocked are not directly connected.
`--intelligent=parent`, the target that is not in the direct is going to the higher level.
@ -605,6 +631,28 @@ When the TCP proxy is a superior type (parameter: -T) is tcp, it supports the sp
`proxy tcp -p ":33080" -T tcp -P" 192.168.22.33:22" -B`
#### Flexible Outgoing IP
Although the above `--bind-listen` parameter can specify the outgoing IP, the `entry IP` and the ` outgoing IP` cannot be referenced artificially. If you want the ingress IP to be different from the egress IP, you can use the `--bind-ip` parameter, format: `IP:port`, for example: `1.1.1.1:8080`
, `[2000:0:0:0:0:0:0:1]:8080`. For multiple binding requirements, you can repeat the `--bind-ip` parameter identification.
For example, this machine has IP `5.5.5.5`, `6.6.6.6`, and monitors two ports `8888` and `7777`, the command is as follows:
`Proxy tcp -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888 -T tcp -P 2.2.2.2:3322`
Then the client access port `7777`, the outgoing IP is `5.5.5.5`, access port `8888`, the outgoing IP is `6.6.6.6`, if both `--bind-ip` and `--bind- are set at the same time listen`,`--bind-ip` has higher priority.
In addition, the `IP` part of the `--bind-ip` parameter supports specifying the `network interface name`, `wildcards`, and more than one can be specified. The detailed description is as follows:
- Specify the network interface name, such as: `--bind-ip eth0:7777`, then the client accesses the `7777` port, and the egress IP is the IP of the eth0 network interface.
- The network interface name supports wildcards, for example: `--bind-ip eth0.*:7777`, then the client accesses the `7777` port, and the egress IP is a randomly selected one of the network interface IPs starting with `eth0.`.
- IP supports wildcards, such as: `--bind-ip 192.168.?.*:7777`, then the client accesses the `7777` port, and the exit IP is all the IPs of the machine, matching the IP of `192.168.?.*` A randomly selected one.
- It can also be multiple combinations of network interface name and IP, separated by half-width commas, such as: `--bind-ip pppoe??,192.168.?.*:7777`, then the client accesses the port `7777`, The outgoing IP is the machine's network interface name matching `pppoe??`
It is a randomly selected one among all IPs of the machine that matches `192.168.?.*`.
- The wildcard character `*` represents 0 to any number of characters, and `?` represents 1 character.
- If the IP of the network interface changes, it will take effect in real time.
- You can use the `--bind-refresh` parameter to specify the interval to refresh the local network interface information, the default is `5`, the unit is second.
### 2.8 Speed limit, connections limit
The parameter `--max-conns` can limit the maximum number of connections per port.
@ -1107,6 +1155,28 @@ The `--bind-listen` parameter can be used to open the client connection with the
`proxy socks -t tcp -p 2.2.2.2:33080 --bind-listen`
#### Flexible Outgoing IP
Although the above `--bind-listen` parameter can specify the outgoing IP, the `entry IP` and ` outgoing IP` cannot be interfered by humans. If you want the ingress IP to be different from the egress IP, you can use the `--bind-ip` parameter, format: `IP:port`, for example: `1.1.1.1:8080`
, `[2000:0:0:0:0:0:0:1]:8080`. For multiple binding requirements, you can repeat the `--bind-ip` parameter.
For example, the machine has IP `5.5.5.5`, `6.6.6.6`, and monitors two ports `8888` and `7777`, the command is as follows:
`proxy socks -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888`
Then the client access port `7777`, the outgoing IP is `5.5.5.5`, access port `8888`, the outgoing IP is `6.6.6.6`, if both `--bind-ip` and `--bind- are set at the same time listen`,`--bind-ip` has higher priority.
In addition, the `IP` part of the `--bind-ip` parameter supports specifying the `network interface name`, `wildcards`, and more than one. The details are as follows:
- Specify the network interface name, such as: `--bind-ip eth0:7777`, then the client accesses the `7777` port, and the egress IP is the IP of the eth0 network interface.
- The network interface name supports wildcards, for example: `--bind-ip eth0.*:7777`, then the client accesses the `7777` port, and the egress IP is a randomly selected one of the network interface IPs starting with `eth0.`.
- IP supports wildcards, such as: `--bind-ip 192.168.?.*:7777`, then the client accesses the `7777` port, and the exit IP is all the IPs of the machine, matching the IP of `192.168.?.*` A randomly selected one.
- It can also be multiple combinations of network interface name and IP, separated by half-width commas, such as: `--bind-ip pppoe??,192.168.?.*:7777`, then the client accesses the port `7777`, The outgoing IP is the machine's network interface name matching `pppoe??`
It is a randomly selected one among all IPs of the machine that matches `192.168.?.*`.
- The wildcard character `*` represents 0 to any number of characters, and `?` represents 1 character.
- If the IP of the network interface changes, it will take effect in real time.
- You can use the `--bind-refresh` parameter to specify the interval to refresh the local network interface information, the default is `5`, the unit is second.
### 5.15 Cascade Certification
SOCKS5 supports cascading authentication, and -A can set upstream authentication information.
@ -1128,7 +1198,7 @@ If it is the beginning of base64://, then the latter data is considered to be ba
### 5.17 Intelligent mode
Intelligent mode setting, can be one of intelligent|direct|parent.
The default is: intelligent.
The default is: parent.
The meaning of each value is as follows:
`--intelligent=direct`, the targets in the blocked are not directly connected.
`--intelligent=parent`, the target that is not in the direct is going to the higher level.
@ -1370,6 +1440,28 @@ The `--bind-listen` parameter can be used to open the client connection with the
`proxy sps -S socks -P 2.2.2.2:33080 -T tcp -Z password -l 100K -t tcp --bind-listen -p :33080`
#### Flexible Outgoing IP
Although the above `--bind-listen` parameter can specify the outgoing IP, the `entry IP` and ` outgoing IP` cannot be interfered by humans. If you want the ingress IP to be different from the egress IP, you can use the `--bind-ip` parameter, format: `IP:port`, for example: `1.1.1.1:8080`
, `[2000:0:0:0:0:0:0:1]:8080`. For multiple binding requirements, you can repeat the `--bind-ip` parameter.
For example, the machine has IP `5.5.5.5`, `6.6.6.6`, and monitors two ports `8888` and `7777`, the command is as follows:
`proxy sps -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888`
Then the client access port `7777`, the outgoing IP is `5.5.5.5`, access port `8888`, the outgoing IP is `6.6.6.6`, if both `--bind-ip` and `--bind- are set at the same time listen`,`--bind-ip` has higher priority.
In addition, the `IP` part of the `--bind-ip` parameter supports specifying the `network interface name`, `wildcards`, and more than one. The details are as follows:
- Specify the network interface name, such as: `--bind-ip eth0:7777`, then the client accesses the `7777` port, and the egress IP is the IP of the eth0 network interface.
- The network interface name supports wildcards, for example: `--bind-ip eth0.*:7777`, then the client accesses the `7777` port, and the egress IP is a randomly selected one of the network interface IPs starting with `eth0.`.
- IP supports wildcards, such as: `--bind-ip 192.168.?.*:7777`, then the client accesses the `7777` port, and the exit IP is all the IPs of the machine, matching the IP of `192.168.?.*` A randomly selected one.
- It can also be multiple combinations of network interface name and IP, separated by half-width commas, such as: `--bind-ip pppoe??,192.168.?.*:7777`, then the client accesses the port `7777`, The outgoing IP is the machine's network interface name matching `pppoe??`
It is a randomly selected one among all IPs of the machine that matches `192.168.?.*`.
- The wildcard character `*` represents 0 to any number of characters, and `?` represents 1 character.
- If the IP of the network interface changes, it will take effect in real time.
- You can use the `--bind-refresh` parameter to specify the interval to refresh the local network interface information, the default is `5`, the unit is second.
### 6.13 Certificate parameters use base64 data
By default, the -C, -K parameter is the path to the crt certificate and the key file.
@ -1587,7 +1679,6 @@ Local execution:
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
#### 8.2.8 Custom encrypted SOCKS5 upstream agent
 
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
`proxy socks -t kcp -p :33080 -z password`
@ -1659,17 +1750,19 @@ if($ok){
header("ipconns:2000");
header("userrate:3000");
header("iprate:8000");
header("UPSTREAM:http://127.0.0.1:3500?parent-type=tcp");
header("outgoing:http://127.0.0.1:3500?parent-type=tcp");
header("outgoing:1.1.1.1");
header("HTTP/1.1 204 No Content");
}
```
#### Explanation
Userconns: The maximum number of connections for the user, not limited to 0 or not set this header.
Ipcons: The maximum number of connections for the user IP, not limited to 0 or not set this header.
Userrate: User's single TCP connection rate limit, in bytes/second, is not limited to 0 or does not set this header.
Iprate: The single TCP connection rate limit of the user IP, in bytes/second, not limited to 0 or not set this header.
Upstream: The upstream used, not empty, or not set this header.
userconns: The maximum number of connections for the user, not limited to 0 or not set this header.
ipcons: The maximum number of connections for the user IP, not limited to 0 or not set this header.
userrate: User's single TCP connection rate limit, in bytes/second, is not limited to 0 or does not set this header.
iprate: The single TCP connection rate limit of the user IP, in bytes/second, not limited to 0 or not set this header.
upstream: The upstream used, not empty, or not set this header.
outgoing: The outgoing ipthis option only working which upstream is empty. And the IP must belong to the machine running proxy。
#### Tips
1. By default, `--auth-url` is required to provide the user name and password. If you do not need the client to provide the username and password, and authenticate, you can add `--auth-nouser`. The visit will still access the authentication address `--auth-url` for authentication. Only the $user authentication username and the $pass authentication password received in the php interface are empty when client didn't send username and password.
@ -1691,15 +1784,17 @@ Explanation: `http://`,`socks5://` is fixed, `127.0.0.1:3100` is the address of
2. When `sps` is 1.
Upstream supports socks5, http(s) proxy, support authentication, format: `protocol://a:b@2.2.2.2:33080?argk=argv`, please refer to SPS chapter for details, **multiple upstreams** , the description of the `-P` parameter.
3. Parameters, `?` followed by `argk=argv` are parameters: parameter name = parameter value, multiple parameters are connected with `&`.
All the supported parameters are as follows, and the meaning of the command line with the same name is the same.
1. parent-type : upper-level transport type, support tcp, tls, ws, wss
2. parent-ws-method: The encryption method of the upper-level ws transmission type, the supported value is the same as the value range supported by the command line.
3. parent-ws-password: The upper-level ws transmission type encryption password, the alphanumeric password
4. parent-tls-single : Whether the upper-level tls transport type is a one-way tls, which can be: true | false
5. timeout : timeout for establishing tcp connection, number, in milliseconds
6. ca : The base64-encoded string of the upper-level tls transport type ca certificate file.
7. cert : The base64 encoded string of the higher level tls transport type certificate file.
8. key : The base64 encoded string of the higher-level tls transport type certificate key file.
All the supported parameters are as follows, and the meaning of the command line with the same name is the same.
1. parent-type : upper-level transport type, support tcp, tls, ws, wss
2. parent-ws-method: The encryption method of the upper-level ws transmission type, the supported value is the same as the value range supported by the command line.
3. parent-ws-password: The upper-level ws transmission type encryption password, the alphanumeric password
4. parent-tls-single : Whether the upper-level tls transport type is a one-way tls, which can be: true | false
5. timeout : timeout for establishing tcp connection, number, in milliseconds
6. ca : The base64-encoded string of the upper-level tls transport type ca certificate file.
7. cert : The base64 encoded string of the higher level tls transport type certificate file.
8. key : The base64 encoded string of the higher-level tls transport type certificate key file.
9. luminati:if upstram is luminati proxiesvalue can be: true or false。
### Traffic report / Traffic limit / Traffic statistics
@ -1721,12 +1816,15 @@ The following is a complete URL request example:
`http://127.0.0.1:33088/user/traffic?bytes=337&client_addr=127.0.0.1%3A51035&id=http&server_addr =127.0.0.1%3A33088&target_addr=myip.ipip.net%3A80&username=a`
Request parameter description:
id: service id flag.
server_addr: proxies's address requested by the client, format: IP: port.
client_addr: client address, format: IP: port.
target_addr: target address, format: "IP: port", when tcp / udp proxy, this is empty.
User name: proxy authentication user name, this is empty when tcp / udp proxy.
bytes: the number of traffic bytes used by the user.
id: service id flag.
server_addr: proxies's address requested by the client, format: IP: port.
client_addr: client address, format: IP: port.
target_addr: target address, format: "IP: port", when tcp / udp proxy, this is empty.
User name: proxy authentication user name, this is empty when tcp / udp proxy.
bytes: the number of traffic bytes used by the user.
out_local_addr: outgoing tcp connection's local address,format: IP: port.
out_remote_addr: outgoing tcp connection's remote address,format: IP: port.
upstream: upstream used by outgoing tcp connection, if none upstream be used, it's empty.
#### Tips
@ -1861,4 +1959,25 @@ Client service parameters can use placeholders: `{AGENT_ID}` to refer to the age
For example, client service parameters:
`client -T tcp -P 1.1.1.1:30000 --k {AGENT_ID}`
`client -T tcp -P 1.1.1.1:30000 --k {AGENT_ID}`
## 12. http, https website reverse proxy
The proxy can reverse proxy http and https websites.
The supported features are as follows:
- http and https are converted to each other.
- multiple upstream.
- upstream load balance.
- upstream high available.
- path mapping.
- path protection.
- alias names of bindings.
Example, configure file:`rhttp.toml`。
```shell
proxy rhttp -c rhttp.toml
```
For detail usage, please refer to the configuration file [rhttp.toml](https://github.com/snail007/goproxy/blob/master/rhttp.toml), which has a complete configuration description.

File diff suppressed because it is too large Load Diff

@ -347,20 +347,35 @@
<h4 id="商业版使用">商业版使用</h4>
<ol>
<li><p>去平台授权平台 <a href="https://gpm.host900.com/?lang=zh-CN">https://gpm.host900.com/?lang=zh-CN</a> 注册一个用户。</p></li>
<li><p>去平台授权平台 <a href="https://gpm.host900.com/?lang=zh-CN">点击进入</a> 注册一个用户。</p></li>
<li><p>如果使用<code>机器码</code>授权方式,首次执行:<code>proxy http</code>,控制面板执行<code>proxy-admin</code><strong>等待程序自己退出,不要手动结束程序</strong>
然后会在当前目录下面生成id.txt文件控制面板 Linux: <code>/etc/gpa/id.txt</code>Windows: <code>C:\gpa\id.txt</code>,里面是当前机器的机器码,
然后在授权后台自助在线购买机器码。然后点击菜单<code>我的机器码</code>,点击列表操作列的<code>修改</code>,把id.txt内的机器码填入到机器码输入框里面然后保存即可完成授权。
或者联系 <code>arraykeys@gmail.com</code> 购买卡密,去授权平台后台点击菜单<code>添加机器码</code>输入<code>卡密</code>完成机器码购买。</p></li>
<li><p>获取机器的机器码(<code>机器码</code>授权方式):</p>
<li><p>如果是<code>授权码</code>方式授权,首先购买授权码,然后会在授权平台里面看见自己的授权码。加上授权码参数<code>--authcode 授权码</code>启动程序即可,也可以设置环境变量<code>LIC_AUTHCODE</code>内容为授权码,如果没有使用参数<code>--authcode</code>,程序尝试从环境变量<code>LIC_AUTHCODE</code>获取授权码。如果是sdkstart方法有授权码参数使用购买的授权码即可。</p></li>
<ul>
<li>如果是<code>goproxy商业版</code>,那么首次执行:<code>proxy http</code><strong>等待程序自己退出,不要手动结束程序</strong>
然后会在当前目录下面生成id.txt文件里面是当前机器的机器码另外命令行也会显示机器码<code>code:</code>后面的东西,注意不包含空格。</li>
<li>如果是<code>proxy-admin 商业版 控制面板</code><code>proxy-admin vip 控制面板</code>,那么首次执行:<code>proxy-admin</code>不带任何参数, 并<strong>等待程序自己退出,不要手动结束程序</strong>
然后会在当前目录和下面的路径生成id.txt文件Linux位于: <code>/etc/gpa/id.txt</code>Windows位于: <code>C:\gpa\id.txt</code>,里面内容是当前机器的机器码。</li>
<li>另外直接执行命<code>proxy-admin</code>不带任何参数,行也会显示机器码,即<code>code:</code>后面的东西,注意不包含空格。</li>
<li>然后在授权后台,在线自助购买,购买机器码名额。然后点击菜单<code>我的机器码</code>,点击列表操作列的<code>修改</code>,把id.txt内的机器码填入到机器码输入框里面然后保存即可完成授权。</li>
<li>卡密方式,此方式可以大批量添加机器码,如需要此方式,可联系 <code>arraykeys@gmail.com</code> 购买卡密,去授权平台后台点击菜单<code>添加机器码</code>输入<code>卡密</code>完成机器码购买。</li>
</ul></li>
<li><p>商业版下载打开下面下载地址后下载文件列表中文件名后缀是_commercial.tar.gz的为商业版。请根据自己系统情况下载。
下载地址:<code>https://github.com/snail007/goproxy/releases</code></p></li>
<li><p><code>授权码</code>方式授权,目前只有<code>goproxy商业版</code>有此授权方式。首先点击进入 <a href="https://gpm.host900.com/">授权后台</a> ,登录后,点击菜单,我的授权码<code>-&gt;</code>在线购买授权码,
然后会在<code>我的授权码列表</code>看见购买的<code>授权码</code>。 然后就是启动<code>proxy</code>的时候加上授权码参数<code>--authcode 授权码</code>启动程序即可,也可以设置环境变量<code>LIC_AUTHCODE</code>内容为授权码,
如果没有使用参数<code>--authcode</code>,程序尝试从环境变量<code>LIC_AUTHCODE</code>获取授权码。</p></li>
<li><p>完全手册:<a href="https://github.com/snail007/goproxy/blob/master/README_ZH.md">https://github.com/snail007/goproxy/blob/master/README_ZH.md</a><br />
新版手册:<a href="https://snail007.github.io/goproxy/categories/goproxy%E6%89%8B%E5%86%8C/">https://snail007.github.io/goproxy/categories/goproxy%E6%89%8B%E5%86%8C/</a></p></li>
<li><p>商业版下载,进入对应项目的首页,点击中文介绍,有详细的下载安装说明。</p>
<ul>
<li>下载文件列表中文件名后缀是_commercial.tar.gz的为商业版。请根据自己系统情况下载。</li>
<li>所有软件项目地址:<a href="https://snail007.host900.com/goproxy/manual/zh/#/?id=%e5%85%8d%e8%b4%b9%e7%89%88%e3%80%81%e5%95%86%e4%b8%9a%e7%89%88%e8%af%b4%e6%98%8e">点击进入</a></li>
</ul></li>
<li><p>注意:不同名字的软件,是不同的软件,不同的软件需要各自购买授权,所以要确保购买的软件和安装的软件是一致的。</p></li>
<li><p>完全手册:<a href="https://github.com/snail007/goproxy/blob/master/README_ZH.md">点击进入</a><br />
新版手册:<a href="https://snail007.github.io/goproxy/categories/goproxy%E6%89%8B%E5%86%8C/">点击进入</a></p></li>
</ol>
<h4 id="提醒">提醒</h4>
@ -382,9 +397,12 @@
<li><p>购买商业版之前你可以免费试用7天以用来确定GOPROXY商业版功能是否满足你的需求。</p></li>
<li><p>试用步骤:登录<a href="https://gpm.host900.com/?lang=zh-CN">授权平台</a> -&gt; 机器码管理 -&gt; 在线购买 -&gt; 点击&rdquo;开始试用&rdquo;</p></li>
</ol>
<h4 id="商业版用户须知">商业版用户须知</h4>
<li><p>proxy-vip控制面板proxy-admin控制面板商业版均不支持试用因为它们和免费版proxy-vip界面和操作一样。
proxy-admin控制面板功能和goproxy商业版功能一样区别是</p>
<h4 id="商业版用户须知">商业版用户须知</h4></li>
</ol>
<p>1、官方免费提供首次安装指导。</p>

@ -363,21 +363,9 @@ If the system finds that the user maliciously propagates its own &lsquo;authoriz
<p>Buy the commercial version, please email to : arraykeys@gmail.com or telegram : arraykeys .</p>
<p>BTC and ETH are accepted.</p>
<p>USDT-TRC20 is accepted.</p>
<p>BTC ADDRESS: <code>1BJcBhGhREiz1q3VTYoiVPuAZy5PGxRG9z</code></p>
<figure>
<img css="width:150px;" src="https://snail007.host900.com/goproxy/img/btc.png" alt="GOPROXY Free Version VS Commercial Version img/btc.png">
</figure>
<p>ETH ADDRESS: <code>0x0fA4c567768d2E59E6221152EA52F4842866AFC8</code></p>
<figure>
<img css="width:150px;" src="https://snail007.host900.com/goproxy/img/eth.png" alt="GOPROXY Free Version VS Commercial Version img/eth.png">
</figure>
<p>USDT-TRC20: <code>THsgQrG6M31YDY4fWkNTv1LbhiAqzfvxFA</code></p>
<h4 id="commercial-edition-trial">Commercial Edition Trial</h4>
@ -387,19 +375,18 @@ If the system finds that the user maliciously propagates its own &lsquo;authoriz
<li><p>Trial steps: Log in to <a href="https://gpm.host900.com/?lang=en-US">Authorization Platform</a> -&gt; My Machine Code -&gt; Buy Online -&gt; Click &ldquo;Start Trial&rdquo;.</p></li>
</ol>
<h4 id="commercial-edition-user-additional-benefits">Commercial Edition User Additional Benefits</h4>
<p>1.the official free of charge provides simple technical guidance.</p>
<p>2.the commercial version of the user can put forward some commercial functional opinions, the official will evaluate the reasonableness of the opinions, etc. If the opinions are adopted, they will be added in the new version in the future.</p>
<h4 id="commercial-edition-list">Commercial Edition List</h4>
<p>3.the commercial version of the user can be updated to commercial version of the new version for free.</p>
<p>Software list<br />
1.<code>proxyadmin commercial</code> edition, price: 240CNY/machine/year, web console and full functions as same as goproxy commercial.<br />
2.<code>proxyadmin vip</code> edition, price: 120CNY/machine/year, web console and full functions as same as goproxy free edition.<br />
3.<code>gorproxy commercial</code> edition, price: 120CNY/machine/year, command line console and full functions of goproxy.<br />
4.<code>proxyadmin cluster</code> edition, price: 360CNY/machine/year, web console to manage many proxies on huge machines that run gorproxy commercial edition.</p>
<p>4.Commercial version download, open the download address below, the file name suffix in the download file list is: _commercial.tar.gz for the commercial version. Please download according to your own system.
Download address: <code>https://github.com/snail007/goproxy/releases</code></p>
<h4 id="notice">Notice</h4>
<p>5.Full Manual<a href="https://github.com/snail007/goproxy/blob/master/README.md">https://github.com/snail007/goproxy/blob/master/README.md</a>
New Manual<a href="https://snail007.github.io/goproxy/categories/goproxy%E6%89%8B%E5%86%8C/">https://snail007.github.io/goproxy/categories/goproxy%E6%89%8B%E5%86%8C/</a></p>
<p>All features of vip edition as same as free edition, but vip edition service count unlimited.<br />
Of all products have no additional usage support, yiu have to read the manual patiently.</p>
<h4 id="can-t-access-the-authorized-solution">Can&rsquo;t access the authorized solution</h4>

@ -1,6 +1,6 @@
#!/bin/bash
F="proxy-linux-amd64.tar.gz"
manual="https://snail.gitee.io/proxy/manual/"
manual="https://snail007.host900.com/goproxy/manual/"
set -e
WORKDIR="/tmp/proxy"
rm -rf $WORKDIR
@ -8,7 +8,7 @@ mkdir $WORKDIR
cp $F $WORKDIR
cd /tmp/proxy
echo -e ">>> installing ... \n"
tar zxvf $F >/dev/null
tar zxvf $F >/dev/null 2>&1
set +e
killall -9 proxy >/dev/null 2>&1
set -e

@ -8,13 +8,13 @@ mkdir /tmp/proxy
cd /tmp/proxy
echo -e "\n>>> downloading ... $F\n"
manual="https://snail.gitee.io/proxy/manual/"
manual="https://snail007.host900.com/goproxy/manual/zh/"
LAST_VERSION=$(curl --silent "https://mirrors.host900.com/https://api.github.com/repos/snail007/goproxy/releases/latest" | grep -Po '"tag_name":"\K.*?(?=")')
wget -t 1 "https://mirrors.host900.com/https://github.com/snail007/goproxy/releases/download/${LAST_VERSION}/$F"
echo -e ">>> installing ... \n"
# #install proxy
tar zxvf $F >/dev/null
tar zxvf $F >/dev/null 2>&1
set +e
killall -9 proxy >/dev/null 2>&1
set -e

@ -7,13 +7,13 @@ fi
mkdir /tmp/proxy
cd /tmp/proxy
echo -e "\n>>> downloading ... $F\n"
manual="https://snail.gitee.io/proxy/manual/"
manual="https://snail007.host900.com/goproxy/manual/zh/"
LAST_VERSION=$(curl --silent "https://mirrors.host900.com/https://api.github.com/repos/snail007/goproxy/releases/latest" | grep -Po '"tag_name":"\K.*?(?=")')
wget -t 1 "https://mirrors.host900.com/https://github.com/snail007/goproxy/releases/download/${LAST_VERSION}/$F"
echo -e ">>> installing ... \n"
# #install proxy
tar zxvf $F >/dev/null
tar zxvf $F >/dev/null 2>&1
set +e
killall -9 proxy >/dev/null 2>&1
set -e

@ -1,6 +1,6 @@
#!/bin/bash
F="proxy-linux-amd64_commercial.tar.gz"
manual="https://snail.gitee.io/proxy/manual/"
manual="https://snail007.host900.com/goproxy/manual/"
set -e
WORKDIR="/tmp/proxy"
rm -rf $WORKDIR
@ -8,7 +8,7 @@ mkdir $WORKDIR
cp $F $WORKDIR
cd /tmp/proxy
echo -e ">>> installing ... \n"
tar zxvf $F >/dev/null
tar zxvf $F >/dev/null 2>&1
set +e
killall -9 proxy >/dev/null 2>&1
set -e

@ -0,0 +1,96 @@
# minimal example
[[host]]
bind="http://demo.com/"
target="https://127.0.0.1:9090/"
upstream="127.0.0.1:9090"
# example: http to https
#[[host]]
#bind="https://localhost"
#tlscert="default"
#target="http://www.baidu.com/"
#upstream="www.baidu.com:80"
#timeout=3000
# example: http to http
#[[host]]
#bind="http://demo.com"
#target="http://www.baidu.com/path/"
#upstream="www.baidu.com:80"
#timeout=3000
# example: https to https
#[[host]]
#bind="https://demo.com"
#tlscert="proxy.crt"
#tlskey="proxy.key"
#target="https://www.baidu.com/"
#upstream="www.baidu.com:443"
#timeout=3000
######################################################################
# All configuration keys of section [[host]].
# A [[host]] is a section.
# You can set multiple [[host]] for the different binding.
######################################################################
#[[host]]
######################################################################
# 1.listen on http or https port in url,
# default http port is 80, https defalt https port is 443.
# 2.multiple binding elements split by space.
######################################################################
#bind="https://demo.com/ http://demo2.com/"
######################################################################
# 1.the binding is https, you can set the certificate and key file.
# 2.tlscert is the https certificate file.
# 3.tlskey is the https certificate key file.
######################################################################
#tlscert="proxy.crt"
#tlskey="proxy.key"
######################################################################
# 1.all requests to binding url will send to the target url.
# 2.you can set the target path FOO_PATH, or leave it empty.
# 3.the finally path send to taget is "/FOO_PATH/PATH", PATH is
# bind-path, if not set, it is empty.
# 4.the HOST HTTP header send to upstream is the host in target url.
######################################################################
#target="https://demo.com/FOO_PATH"
######################################################################
# 1.you can set multiple upstreams.
# 2.proxy will select one upstream by the --lb-method rule.
# 3.multiple upstreams separated by space.
# 4.upstream host can be ip or domain, format is HOST:PORT.
######################################################################
#upstream="10.0.0.10:443 app.com:443"
######################################################################
# 1.you can set some path access forbidden.
# 2."403 path" regex expression supported.
# 3.you can set mutiple path, it is a path array.
######################################################################
#403=["/admin","/auth","^/user/.*html$"]
######################################################################
# 1.you can set the timeout milliseconds connect to target.
# 2."403 path" regex expression supported.
# 3.you can set mutiple path, it is a path array.
######################################################################
#timeout=3000
##########################################################################
# 1.you can set the alias name of binding.
# 2.the first element is bind to, it should be one element of bind value.
# 3.the else elements are alias host names, name format is HOST:PORT, it
# will be set in the HTTP header HOST send to the upstream.
##########################################################################
#bind-alias=["https://demo.com www.foo.com:443"]
######################################################################
# 1.the request's path must be has a prefix in the bind-path array.
#bind-path=["/PATH"]
Loading…
Cancel
Save