FRP 和 nginx的共存使用 frp使用80端口

16 min read

如果想让 FRP 的 vhost_http_port 使用非80端口,同时和Nginx共享80端口,可以通过Nginx反向代理的方式实现。这样,Nginx负责监听80端口,然后根据域名或路径将请求转发到FRP监听的其他端口。

这允许在不更改FRP配置的情况下,通过Nginx来控制哪些请求被转发到FRP。

配置步骤:

  1. 配置 FRP 服务器 (frps.ini):

    • 设置 vhost_http_port 为一个非80的端口,例如8080。
    • 确保 bind_port 正确配置。
  2. 配置 FRP 客户端 (frpc.ini):

    • 配置一个或多个代理,将内部服务暴露出去。
  3. 配置 Nginx:

    • 修改Nginx配置,为FRP管理的域或路径添加一个反向代理配置,将请求从80端口转发到FRP的 vhost_http_port

示例配置

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请求。