From 102408d37fd7e7431054b01b1bd1b5cc2165f821 Mon Sep 17 00:00:00 2001 From: fatedier Date: Fri, 25 May 2018 01:25:36 +0800 Subject: [PATCH] doc: load balancing --- README.md | 28 +++++++++++++++++++++++++++- README_zh.md | 32 +++++++++++++++++++++++++++++--- conf/frpc_full.ini | 2 +- 3 files changed, 57 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c525e44..b97b15a 100644 --- a/README.md +++ b/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) * [Support KCP Protocol](#support-kcp-protocol) * [Connection Pool](#connection-pool) + * [Load balancing](#load-balancing) * [Rewriting the Host Header](#rewriting-the-host-header) * [Set Headers In HTTP Request](#set-headers-in-http-request) * [Get Real IP](#get-real-ip) @@ -484,6 +485,32 @@ This feature is fit for a large number of short connections. 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 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. * Direct reverse proxy, like haproxy. -* Load balance to different service in frpc. * kubernetes ingress support. ## Contributing diff --git a/README_zh.md b/README_zh.md index 99e85d1..3a9e67b 100644 --- a/README_zh.md +++ b/README_zh.md @@ -33,8 +33,9 @@ frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp * [TCP 多路复用](#tcp-多路复用) * [底层通信可选 kcp 协议](#底层通信可选-kcp-协议) * [连接池](#连接池) + * [负载均衡](#负载均衡) * [修改 Host Header](#修改-host-header) - * [设置 http 请求的 header](#设置-http-请求的-header) + * [设置 HTTP 请求的 header](#设置-http-请求的-header) * [获取用户真实 IP](#获取用户真实-ip) * [通过密码保护你的 web 服务](#通过密码保护你的-web-服务) * [自定义二级域名](#自定义二级域名) @@ -511,6 +512,32 @@ tcp_mux = false 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 通常情况下 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 请求的 header +### 设置 HTTP 请求的 header 对于 `type = http` 的代理,可以设置在转发中动态添加的 header 参数。 @@ -684,7 +711,6 @@ plugin_http_passwd = abc * frps 记录 http 请求日志。 * frps 支持直接反向代理,类似 haproxy。 -* frpc 支持负载均衡到后端不同服务。 * 集成对 k8s 等平台的支持。 ## 为 frp 做贡献 diff --git a/conf/frpc_full.ini b/conf/frpc_full.ini index 05f7d7e..c3d13ff 100644 --- a/conf/frpc_full.ini +++ b/conf/frpc_full.ini @@ -45,7 +45,7 @@ login_fail_exit = true protocol = tcp # 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 ',' # default is empty, means all proxies