目 录CONTENT

文章目录
frp

frp配置与使用——Https转发访问者IP

过客
2025-11-24 / 0 评论 / 0 点赞 / 5 阅读 / 0 字

前面讲过 frp配置与使用——Web 服务,在实际应用中使用 https -> https 模式转发数据会更安全一点。

一、架构图如下:

flowchart TD A[客户端] -->|通过Https访问|B[公网frps服务器,监听443] B-->|TCP 隧道转发|C[内网frpc(type=https)] C-->D[后端Nginx(HTTPS验证)] D-->E[内部 HTTP 应用]

二、分析

frp的https类型是TCP层转发,不解析HTTP内容,所以,没法通过 注入 X-Forwarded-For 方法来实现访问IP的传递。所以,我们可以添加PROXY协议,这时会在TCP连接建立时,在数据前面附加一行PROXY协议头,包含源IP和端口。

三、配置

frpc配置

# https->https 模式, 直接转发,可以不加载ssl证书
[[proxies]]
name = "https2https"
type = "https"
localIP = "127.0.0.1"
localPort = 443
customDomains = ["https2https.yourdomain.com"]

# 启用 proxy protocol v2
transport.proxyProtocolVersion = "v2"

后端Nginx配置

server {
    # 注意:listen 必须加上 proxy_protocol
    listen 443 ssl proxy_protocol;

    # 告诉 Nginx:来自 frp 的连接才可信(通常是 127.0.0.1 或内网 IP)
    set_real_ip_from 127.0.0.1;      # 如果 frpc 和 Nginx 同机
    # 或 set_real_ip_from 192.168.1.0/24;  # 如果跨内网机器
    real_ip_header proxy_protocol;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/privkey.pem;

    # 转发配置
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header X-Real-IP $remote_addr;          # 现在 $remote_addr 是真实 IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }
}
0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区