mirror of
https://gitee.com/IrisVega/frp.git
synced 2024-11-01 22:31:29 +08:00
doc: load balancing
This commit is contained in:
parent
495b577819
commit
102408d37f
28
README.md
28
README.md
@ -35,6 +35,7 @@ frp is a fast reverse proxy to help you expose a local server behind a NAT or fi
|
|||||||
* [TCP Stream Multiplexing](#tcp-stream-multiplexing)
|
* [TCP Stream Multiplexing](#tcp-stream-multiplexing)
|
||||||
* [Support KCP Protocol](#support-kcp-protocol)
|
* [Support KCP Protocol](#support-kcp-protocol)
|
||||||
* [Connection Pool](#connection-pool)
|
* [Connection Pool](#connection-pool)
|
||||||
|
* [Load balancing](#load-balancing)
|
||||||
* [Rewriting the Host Header](#rewriting-the-host-header)
|
* [Rewriting the Host Header](#rewriting-the-host-header)
|
||||||
* [Set Headers In HTTP Request](#set-headers-in-http-request)
|
* [Set Headers In HTTP Request](#set-headers-in-http-request)
|
||||||
* [Get Real IP](#get-real-ip)
|
* [Get Real IP](#get-real-ip)
|
||||||
@ -484,6 +485,32 @@ This feature is fit for a large number of short connections.
|
|||||||
pool_count = 1
|
pool_count = 1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Load balancing
|
||||||
|
|
||||||
|
Load balancing is supported by `group`.
|
||||||
|
This feature is available only for type `tcp` now.
|
||||||
|
|
||||||
|
```ini
|
||||||
|
# frpc.ini
|
||||||
|
[test1]
|
||||||
|
type = tcp
|
||||||
|
local_port = 8080
|
||||||
|
remote_port = 80
|
||||||
|
group = web
|
||||||
|
group_key = 123
|
||||||
|
|
||||||
|
[test2]
|
||||||
|
type = tcp
|
||||||
|
local_port = 8081
|
||||||
|
remote_port = 80
|
||||||
|
group = web
|
||||||
|
group_key = 123
|
||||||
|
```
|
||||||
|
|
||||||
|
`group_key` is used for authentication.
|
||||||
|
|
||||||
|
Proxies in same group will accept connections from port 80 randomly.
|
||||||
|
|
||||||
### Rewriting the Host Header
|
### Rewriting the Host Header
|
||||||
|
|
||||||
When forwarding to a local port, frp does not modify the tunneled HTTP requests at all, they are copied to your server byte-for-byte as they are received. Some application servers use the Host header for determining which development site to display. For this reason, frp can rewrite your requests with a modified host header. Use the `host_header_rewrite` switch to rewrite incoming HTTP requests.
|
When forwarding to a local port, frp does not modify the tunneled HTTP requests at all, they are copied to your server byte-for-byte as they are received. Some application servers use the Host header for determining which development site to display. For this reason, frp can rewrite your requests with a modified host header. Use the `host_header_rewrite` switch to rewrite incoming HTTP requests.
|
||||||
@ -644,7 +671,6 @@ plugin_http_passwd = abc
|
|||||||
|
|
||||||
* Log http request information in frps.
|
* Log http request information in frps.
|
||||||
* Direct reverse proxy, like haproxy.
|
* Direct reverse proxy, like haproxy.
|
||||||
* Load balance to different service in frpc.
|
|
||||||
* kubernetes ingress support.
|
* kubernetes ingress support.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
32
README_zh.md
32
README_zh.md
@ -33,8 +33,9 @@ frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp
|
|||||||
* [TCP 多路复用](#tcp-多路复用)
|
* [TCP 多路复用](#tcp-多路复用)
|
||||||
* [底层通信可选 kcp 协议](#底层通信可选-kcp-协议)
|
* [底层通信可选 kcp 协议](#底层通信可选-kcp-协议)
|
||||||
* [连接池](#连接池)
|
* [连接池](#连接池)
|
||||||
|
* [负载均衡](#负载均衡)
|
||||||
* [修改 Host Header](#修改-host-header)
|
* [修改 Host Header](#修改-host-header)
|
||||||
* [设置 http 请求的 header](#设置-http-请求的-header)
|
* [设置 HTTP 请求的 header](#设置-http-请求的-header)
|
||||||
* [获取用户真实 IP](#获取用户真实-ip)
|
* [获取用户真实 IP](#获取用户真实-ip)
|
||||||
* [通过密码保护你的 web 服务](#通过密码保护你的-web-服务)
|
* [通过密码保护你的 web 服务](#通过密码保护你的-web-服务)
|
||||||
* [自定义二级域名](#自定义二级域名)
|
* [自定义二级域名](#自定义二级域名)
|
||||||
@ -511,6 +512,32 @@ tcp_mux = false
|
|||||||
pool_count = 1
|
pool_count = 1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 负载均衡
|
||||||
|
|
||||||
|
可以将多个相同类型的 proxy 加入到同一个 group 中,从而实现负载均衡的功能。
|
||||||
|
目前只支持 tcp 类型的 proxy。
|
||||||
|
|
||||||
|
```ini
|
||||||
|
# fprc.ini
|
||||||
|
[test1]
|
||||||
|
type = tcp
|
||||||
|
local_port = 8080
|
||||||
|
remote_port = 80
|
||||||
|
group = web
|
||||||
|
group_key = 123
|
||||||
|
|
||||||
|
[test2]
|
||||||
|
type = tcp
|
||||||
|
local_port = 8081
|
||||||
|
remote_port = 80
|
||||||
|
group = web
|
||||||
|
group_key = 123
|
||||||
|
```
|
||||||
|
|
||||||
|
用户连接 frps 服务器的 80 端口,frps 会将接收到的用户连接随机分发给其中一个存活的 proxy。这样可以在一台 frpc 机器挂掉后仍然有其他节点能够提供服务。
|
||||||
|
|
||||||
|
要求 `group_key` 相同,做权限验证,且 `remote_port` 相同。
|
||||||
|
|
||||||
### 修改 Host Header
|
### 修改 Host Header
|
||||||
|
|
||||||
通常情况下 frp 不会修改转发的任何数据。但有一些后端服务会根据 http 请求 header 中的 host 字段来展现不同的网站,例如 nginx 的虚拟主机服务,启用 host-header 的修改功能可以动态修改 http 请求中的 host 字段。该功能仅限于 http 类型的代理。
|
通常情况下 frp 不会修改转发的任何数据。但有一些后端服务会根据 http 请求 header 中的 host 字段来展现不同的网站,例如 nginx 的虚拟主机服务,启用 host-header 的修改功能可以动态修改 http 请求中的 host 字段。该功能仅限于 http 类型的代理。
|
||||||
@ -526,7 +553,7 @@ host_header_rewrite = dev.yourdomain.com
|
|||||||
|
|
||||||
原来 http 请求中的 host 字段 `test.yourdomain.com` 转发到后端服务时会被替换为 `dev.yourdomain.com`。
|
原来 http 请求中的 host 字段 `test.yourdomain.com` 转发到后端服务时会被替换为 `dev.yourdomain.com`。
|
||||||
|
|
||||||
### 设置 http 请求的 header
|
### 设置 HTTP 请求的 header
|
||||||
|
|
||||||
对于 `type = http` 的代理,可以设置在转发中动态添加的 header 参数。
|
对于 `type = http` 的代理,可以设置在转发中动态添加的 header 参数。
|
||||||
|
|
||||||
@ -684,7 +711,6 @@ plugin_http_passwd = abc
|
|||||||
|
|
||||||
* frps 记录 http 请求日志。
|
* frps 记录 http 请求日志。
|
||||||
* frps 支持直接反向代理,类似 haproxy。
|
* frps 支持直接反向代理,类似 haproxy。
|
||||||
* frpc 支持负载均衡到后端不同服务。
|
|
||||||
* 集成对 k8s 等平台的支持。
|
* 集成对 k8s 等平台的支持。
|
||||||
|
|
||||||
## 为 frp 做贡献
|
## 为 frp 做贡献
|
||||||
|
@ -45,7 +45,7 @@ login_fail_exit = true
|
|||||||
protocol = tcp
|
protocol = tcp
|
||||||
|
|
||||||
# specify a dns server, so frpc will use this instead of default one
|
# specify a dns server, so frpc will use this instead of default one
|
||||||
dns_server = 8.8.8.8
|
# dns_server = 8.8.8.8
|
||||||
|
|
||||||
# proxy names you want to start divided by ','
|
# proxy names you want to start divided by ','
|
||||||
# default is empty, means all proxies
|
# default is empty, means all proxies
|
||||||
|
Loading…
Reference in New Issue
Block a user