nginx配置了反向代理只能获取外网ip吗

nginx 配置如下

server {
        server_name test.test.com;
        listen 80;

        location / {
            proxy_pass http://localhost:9999;
            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   Remote_Addr      $http_true_client_ip;
            proxy_set_header REMOTE-HOST $remote_addr;

       }
}

能否配置nginx使其能获取内网ip,而不是外网ip。或者有没有现有的接口可以获取用户的内网ip。

阅读 4.4k
2 个回答

你不是配了 X-Forwarded-For 吗?优先取它不就完了?

你的意思是,你想取用户所在网络的内网IP?

这个,http协议里,remote_addr 是连接连接对段IP,你这个有反响代理,PHP获取的就是nginx反向代理的内网IP.x-forwarded-for 这个头本身就可以被伪装,且只有在经过代理服务器,CDN服务器时,这些服务器才会把IP写进去,而现在一般内网上网也不会用代理服务器,所以这个头都是连接各段的公网IP,但是这个头是可以被伪装的,所以,基本只能信任你白名单内IP的前一跳IP,浏览器js 不知道有没有权限读用户网卡配置,如果没有,你就拿不到。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题