FRP内网穿透后群晖获取真实地址
侧边栏壁纸
  • 累计撰写 60 篇文章
  • 累计收到 108 条评论

FRP内网穿透后群晖获取真实地址

Skycyan
2024-11-17 / 0 评论 / 127 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年11月17日,已超过369天没有更新,若内容或图片失效,请留言反馈。

问题描述

基本思路

  1. 利用FRP的 Proxy Protocol 协议来传递经过真实 IP
    frp 支持通过 Proxy Protocol 协议来传递经过 frp 代理的请求的真实 IP
  2. 利用群晖自带的Nginx反向代理内部服务
    群晖的nginx的用户自定义配置文件路径在/etc/nginx/conf.d/目录下,并以http.*.conf格式命名

    server {
     # 监听IPv4,并开启Proxy Protocol协议
     listen 5501 ssl proxy_protocol;
    
     # 监听IPv6,并开启Proxy Protocol协议
     listen [::]:5501 ssl proxy_protocol;
    
     # 监听的域名,你解析给云服务器的域名
     server_name ds.home.com;
    
     # 排除Cloudflare CDN的IP
     # 如果你有使用到CDN的服务的话,一般NAS不会使用到此类IP
     # 仅供参考,自行配置
     set_real_ip_from 173.245.48.0/20;
    
     # 排除本地IP,请根据你的具体情况配置
     set_real_ip_from 192.168.0.0/16;
     set_real_ip_from 10.0.0.0/8;
    
     # 排除服务器IP
     set_real_ip_from 1.1.1.1/32;
    
     # 真实IP使用proxy_protocol协议
     real_ip_header proxy_protocol;
    
     # 开启排除IP功能
     real_ip_recursive on;
    
     proxy_headers_hash_max_size 512;
     proxy_headers_hash_bucket_size 128;
    
     # 反向代理
     location / {
         # 目标地址,群晖默认HTTPS地址为5001,请根据实际情况调整
         proxy_pass https://localhost:5001;
    
         # 兼容http
         proxy_set_header Upgrade-Insecure-Requests 1;
    
         # 告诉后端使用ssl
         proxy_ssl_server_name on;
    
         # 客户端使用的http协议
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_set_header X-Scheme $scheme;
    
         # 客户端host
         proxy_set_header Host $host;
         proxy_set_header REMOTE-HOST $remote_addr;
         proxy_set_header X-Forwarded-Host $http_host;
    
         # 完整URI
         proxy_set_header X-Original-URI $request_uri;
    
         # 客户端使用的端口
         proxy_set_header X-Real-Port $proxy_protocol_port;
    
         # 多层代理IP
         proxy_set_header X-Forwarded-For $proxy_protocol_addr;
    
         # 客户端IP,群晖默认会通过X-Real-IP获取用户IP
         proxy_set_header X-Real-IP $proxy_protocol_addr;
    
         # 支持Websocket
         # 如果你使用诸如Docker bash此类的功能,则需要开启Websocket
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection Upgrade;
         proxy_connect_timeout 60s;
         proxy_read_timeout 60s;
         proxy_send_timeout 12s;
         # 配置文件来自https://www.alainlam.cn/?p=403
     }
    }
    

检查Nginx配置文件
重启nginx

systemctl restart nginx
0

评论 (0)

取消