FRP 和 Nginx 共用 80 端口
虽然在 FRP 官网中给了 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
即可展现效果。