前置

虽然在 FRPopen in new window 官网中给了 web 服务配置的示例,但在实际使用中存在两个问题:

  • 有时部分资源找不到,导致页面无法渲染
  • 域名后面还带一个端口,实在有点丑

配置

1. 服务器端 FRP 配置

[common]
bind_port = 7000
vhost_http_port = 8080
subdomain_host = frp.xxx.com

2. 服务器端 Nginx 配置

利用正则来匹配所有的 frp 二级域名。

# /etc/nginx/conf.d/frp.conf

server {
    listen       80;
    server_name  frp.xxx.com *.frp.xxx.com;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        proxy_pass              http://127.0.0.1:7000;
        # 此处简写
        proxy_set_header        Host $host;
    }


    #error_page  404              /404.html;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

3. 域名解析配置

根据 Nginx 的配置添加两项:

  • frp.xxx.com
  • *.frp.xxx.com

4. 客户端 FRP 配置

客户端的 Nginx 配置为默认时就可以使用,此处省略。

[common]
server_addr = xxx.xx.xx.xxx
server_port = 7000

# [ssh] 省略

[web1]
type = http
local_ip = 127.0.0.1
local_port = 80
subdomain = sub1

测试

最后通过浏览器访问 sub1.frp.xxx.com 即可展现效果。