**FRP 配置多个 HTTP 服务转发**
假设你有两个服务:
- 本地服务 A:本地运行在端口 8081
- 本地服务 B:本地运行在端口 8082
可以将这两个服务都转发到 VPS 上的同一个端口(例如,remote_port = 8080),然后通过 Nginx 来转发到对应的服务。
步骤 1:配置 FRP 客户端(本地机器)
下载并解压 FRP 客户端(frpc):
wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz tar -xzvf frp_0.62.1_linux_amd64.tar.gz cd frp_0.62.1_linux_amd64配置 FRP 客户端
在frpc.toml中,转发多个本地http服务:serverAddr = "VPS_IP" serverPort = 7000 auth.method = "token" auth.token = "token" [[proxies]] name = "discourse" type = "http" localIP = "192.168.1.88" localPort = 8081 customDomains = ["domain_a.com"] [[proxies]] name = "wordpress" type = "http" localIP = "192.168.1.88" localPort = 8082 customDomains = ["domain_b.com"]启动 FRP 客户端:
启动 FRP 客户端将本地服务转发到 VPS:
./frpc -c ./frpc.ini步骤 2:配置 FRP 服务端(VPS)
- 下载并解压 FRP 服务端(frps):
在 VPS 上下载并解压 FRP 服务端:
wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz
tar -xzvf frp_0.62.1_linux_amd64.tar.gz
cd frp_0.62.1_linux_amd64- 配置 FRP 服务端:
配置frps.toml文件:
bindAddr = "0.0.0.0"
bindPort = 7000
vhostHTTPPort = 8080
auth.method = "token"
auth.token = "token"- 启动 FRP 服务端:
启动 FRP 服务端:
./frps -c ./frps.ini步骤 3:配置VPS的 Nginx 的反向代理
- 配置服务 A 的反向代理:
进入 Nginx 配置页面,添加以下配置:
server {
listen 80;
server_name domain_a.com;
location / {
proxy_pass http://127.0.0.1:8080; frps服务配置的vhostHTTPPort端口
proxy_set_header Host $host:8081;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 10s;
proxy_send_timeout 30s;
proxy_read_timeout 120s;
}
}- 配置服务 B 的反向代理:
添加另一个配置,用于服务 B:
server {
listen 80;
server_name domain_b.com;
location / {
proxy_pass http://127.0.0.1:8080; frps服务配置的vhostHTTPPort端口
proxy_set_header Host $host:8082;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 10s;
proxy_send_timeout 30s;
proxy_read_timeout 120s;
}
}步骤 4:配置域名解析
确保你的域名(domain_a.com 和 domain_b.com)已经正确解析到你的 VPS 的公网 IP。你可以在域名服务商的控制面板中添加相应的 A 记录,指向 VPS 的 IP 地址。
domain_a.com→<VPS_IP>domain_b.com→<VPS_IP>
步骤 5:测试访问
现在,你可以通过以下方式访问你的 HTTP 服务:
- 访问
http://domain_a.com,将会转发到本地的服务 A。 - 访问
http://domain_b.com,将会转发到本地的服务 B。
通过上述配置,FRP 将多个 HTTP 服务(如服务 A 和服务 B)转发到 VPS 上的同一个端口(例如 remote_port = 8080)。然后,Nginx 配置根据不同的域名将流量反向代理到不同的本地端口。







