V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
toyst
V2EX  ›  NGINX

nginx 反代传递域名端口的问题

  •  
  •   toyst · 2019-03-21 23:22:15 +08:00 · 2482 次点击
    这是一个创建于 2073 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先贴个我的配置:

    server
    {
    	listen 8 ssl http2;
        server_name domain.com;
        ssl_certificate    /etc/default/fullchain.cer;
        ssl_certificate_key    /etc/default/domain.com.key;
    
    
    	error_page  497 https://$host:8$request_uri;
        location / {
        proxy_redirect off;  
        proxy_set_header Host $http_host;  
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    	proxy_set_header X-Scheme $scheme;
        proxy_pass https://192.168.2.5:5001;
        }
    }
    

    IP 和端口的情况: 客户端( 192.168.2.2 )→Nginx ( domain.com:8 )→服务器后端( https://192.168.2.5:5001 )

    我想实现这样的配置,通俗来说就是当「客户端」输入:「 https://domain.com:8 」访问的时候,服务器后端接受到的信息是:「客户端」的 IP 是「 192.168.2.2 」是通过访问「 https://192.168.2.5:5001 」来访问服务器后端的,也就是说当 Nginx 完全不存在一样,这样的话应该怎么样配置呢? 谢谢!

    3 条回复    2019-03-22 00:38:50 +08:00
    joesonw
        1
    joesonw  
       2019-03-21 23:37:27 +08:00
    proxy_set_header X-Real-IP $remote_addr 不就是吗 ??????
    ysc3839
        2
    ysc3839  
       2019-03-22 00:28:42 +08:00
    完全不做修改是不可能实现的。修改的话通过 X-Real-IP 头来获取 IP 地址就好了。
    azh7138m
        3
    azh7138m  
       2019-03-22 00:38:50 +08:00
    一般是自己加一个 header。
    对后端完全透明不是不行,需要满足,反代机器是服务器的网关,常见一点的就是 tproxy,也就是个 4 层上的问题,不能在 7 层上面做。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2662 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:46 · PVG 19:46 · LAX 03:46 · JFK 06:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.