如果想让 FRP 的 vhost_http_port
使用非80端口,同时和Nginx共享80端口,可以通过Nginx反向代理的方式实现。这样,Nginx负责监听80端口,然后根据域名或路径将请求转发到FRP监听的其他端口。
这允许在不更改FRP配置的情况下,通过Nginx来控制哪些请求被转发到FRP。
配置步骤:
-
配置 FRP 服务器 (
frps.ini
):- 设置
vhost_http_port
为一个非80的端口,例如8080。 - 确保
bind_port
正确配置。
- 设置
-
配置 FRP 客户端 (
frpc.ini
):- 配置一个或多个代理,将内部服务暴露出去。
-
配置 Nginx:
- 修改Nginx配置,为FRP管理的域或路径添加一个反向代理配置,将请求从80端口转发到FRP的
vhost_http_port
。
- 修改Nginx配置,为FRP管理的域或路径添加一个反向代理配置,将请求从80端口转发到FRP的
示例配置
FRP 服务器 (frps.ini
):
[common] bind_port = 7000 vhost_http_port = 8080
FRP 客户端 (frpc.ini
):
[common] server_addr = x.x.x.x server_port = 7000 [web] type = http local_port = 80 custom_domains = www.example.com
Nginx 配置 (/etc/nginx/sites-available/example.conf
):
server { listen 80; server_name www.example.com; location / { proxy_pass http://127.0.0.1:8080; # FRP的vhost_http_port proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
确保在Nginx中为每个通过FRP暴露的服务配置适当的 server
块。这种方式允许灵活地使用FRP将内部服务暴露在公网上,同时通过Nginx处理80端口的所有入站HTTP请求。