diff --git a/README.md b/README.md index 99975f0d..252776ec 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ frp is a fast reverse proxy to help you expose a local server behind a NAT or fi * [Rewriting the Host Header](#rewriting-the-host-header) * [Password protecting your web service](#password-protecting-your-web-service) * [Custom subdomain names](#custom-subdomain-names) + * [URL routing](#url-routing) * [Connect frps by HTTP PROXY](#connect-frps-by-http-proxy) * [Development Plan](#development-plan) * [Contributing](#contributing) @@ -414,6 +415,30 @@ Now you can visit your web service by host `test.frps.com`. Note that if `subdomain_host` is not empty, `custom_domains` should not be the subdomain of `subdomain_host`. +### URL routing + +frp support forward http requests to different backward web services by url routing. + +`locations` specify the prefix of URL used for routing. frps first searches for the most specific prefix location given by literal strings regardless of the listed order. + +```ini +# frpc.ini +[web01] +privilege_mode = true +type = http +local_port = 80 +custom_domains = web.yourdomain.com +locations = / + +[web02] +privilege_mode = true +type = http +local_port = 81 +custom_domains = web.yourdomain.com +locations = /news,/about +``` +Http requests with url prefix `/news` and `/about` will be forwarded to **web02** and others to **web01**. + ### Connect frps by HTTP PROXY frpc can connect frps using HTTP PROXY if you set os environment `HTTP_PROXY` or configure `http_proxy` param in frpc.ini file. diff --git a/README_zh.md b/README_zh.md index 42a22f23..69cac27f 100644 --- a/README_zh.md +++ b/README_zh.md @@ -27,6 +27,7 @@ frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内 * [修改 Host Header](#修改-host-header) * [通过密码保护你的 web 服务](#通过密码保护你的-web-服务) * [自定义二级域名](#自定义二级域名) + * [URL 路由](#url-路由) * [通过 HTTP PROXY 连接 frps](#通过-http-proxy-连接-frps) * [开发计划](#开发计划) * [为 frp 做贡献](#为-frp-做贡献) @@ -426,6 +427,31 @@ frps 和 fprc 都启动成功后,通过 `test.frps.com` 就可以访问到内 同一个 http 或 https 类型的代理中 `custom_domains` 和 `subdomain` 可以同时配置。 +### URL 路由 + +frp 支持根据请求的 URL 路径路由转发到不同的后端服务。 + +通过配置文件中的 `locations` 字段指定一个或多个 proxy 能够匹配的 URL 前缀(目前仅支持最大前缀匹配,之后会考虑正则匹配)。例如指定 `locations = /news`,则所有 URL 以 `/news` 开头的请求都会被转发到这个服务。 + +```ini +# frpc.ini +[web01] +privilege_mode = true +type = http +local_port = 80 +custom_domains = web.yourdomain.com +locations = / + +[web02] +privilege_mode = true +type = http +local_port = 81 +custom_domains = web.yourdomain.com +locations = /news,/about +``` + +按照上述的示例配置后,`web.yourdomain.com` 这个域名下所有以 `/news` 以及 `/about` 作为前缀的 URL 请求都会被转发到 web02,其余的请求会被转发到 web01。 + ### 通过 HTTP PROXY 连接 frps 在只能通过代理访问外网的环境内,frpc 支持通过 HTTP PROXY 和 frps 进行通信。