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

Nginx 监听 unix sock 的时候如何获取客户端的真实 IP?

  •  
  •   mashirozx · 2019-09-09 17:08:19 +08:00 · 3178 次点击
    这是一个创建于 1891 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用这边先用 stream 模块做负载均衡,然后通过 unix sock 反代后端的 server,但是这时后端记录的 example.com 日志里,访问的 IP 都是 unix: - -

    我的疑问:
    1.当 server listen 的不是 80、443 之类的端口,而是 unix sock 的时候如何获取客户端的真实 IP ?
    2.如果需要 stream 模块传递真实 IP,应当怎样写?

    这是完整的日志:

    unix: - - [09/Sep/2019:16:50:56 +0800] "GET /v1/sss HTTP/1.1" "404" 118 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" "-" "-" 0.350 382 685

    这是我的 Nginx 配置(大意):

    stream {
        server {
            listen 443;
            proxy_protocol on;
            proxy_pass  unix:/dev/shm/localweb.sock;
            ssl_preread on;
        }
    }
    
    
    http 
    {
    	server 
        {
        	listen unix:/dev/shm/localweb.sock ssl proxy_protocol;
        	server_name example.com;
            
            access_log /var/log/nginx/access.log main;
    		error_log /var/log/nginx/error.log;
        }
    }
    
    
    5 条回复    2019-09-09 17:32:28 +08:00
    ragnaroks
        1
    ragnaroks  
       2019-09-09 17:28:19 +08:00   ❤️ 1
    server 里面传递 x-real-ip
    xhcnb
        2
    xhcnb  
       2019-09-09 17:28:32 +08:00
    X-Forwarded-For
    skyqqcc
        3
    skyqqcc  
       2019-09-09 17:29:57 +08:00 via Android
    全部都是 dump 出来,再看就知道是哪个了。。
    bearice
        4
    bearice  
       2019-09-09 17:30:59 +08:00
    stream 是 4 层代理,HTTP 头就不用想了,可以用 proxy_protocol
    Aruforce
        5
    Aruforce  
       2019-09-09 17:32:28 +08:00
    uinix socket 是系统内进程通信吧... 有 IP 这样的概念?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5718 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 06:38 · PVG 14:38 · LAX 22:38 · JFK 01:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.