FRP 配置多个 HTTP 服务转发到VPS 上的同一个端口

0
20

**FRP 配置多个 HTTP 服务转发**

假设你有两个服务:

  • 本地服务 A:本地运行在端口 8081
  • 本地服务 B:本地运行在端口 8082

可以将这两个服务都转发到 VPS 上的同一个端口(例如,remote_port = 8080),然后通过 Nginx 来转发到对应的服务。

步骤 1:配置 FRP 客户端(本地机器)

  1. 下载并解压 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
  2. 配置 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"]
  3. 启动 FRP 客户端
    启动 FRP 客户端将本地服务转发到 VPS:

./frpc -c ./frpc.ini

步骤 2:配置 FRP 服务端(VPS)

  1. 下载并解压 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
  1. 配置 FRP 服务端
    配置 frps.toml 文件:
bindAddr = "0.0.0.0"
bindPort = 7000
vhostHTTPPort = 8080

auth.method = "token"
auth.token = "token"
  1. 启动 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.comdomain_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 配置根据不同的域名将流量反向代理到不同的本地端口。

发布回复

请输入评论!
请输入你的名字