zoukankan      html  css  js  c++  java
  • nginx通过多级代理获得真实用户IP的方法

    nginx的default.nginx中添加
    location ~ ^/mqtt {
            proxy_pass http://emqttd:8083;
            proxy_redirect    off;
            proxy_set_header X-Real-IP $remote_addr; 
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     
            # nginx支持websockets
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
     
    说明:
    1. 如果使用了多个代理,不能 使用proxy_set_header X-Real-IP $remote_addr直接得到用户真实IP,需要使用命令 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
    1)X-real-ip是一个自定义的变量名,名字可以随意取,这样做完之后,用户的真实ip就被放在X-real-ip这个变量里了,然后,在web端可以这样获取:request.getAttribute("X-real-ip")
    2)$remote_addr用于获取到上一级代理的IP
    3)$proxy_add_x_forwarded_for变量包含客户端请求头中的"X-Forwarded-For",与$remote_addr两部分,他们之间用逗号分开,例如:(223.104.6.125, 10.10.10.45),第一个是用户的真实IP,第二个是一级代理的IP,依此类推
     
    2. Nginx通过在客户端和后端服务器之间建立隧道来支持WebSockets通信。为了让Nginx可以将来自客户端的Upgrade请求发送到后端服务器,Upgrade和Connection的头信息必须被显式的设置
  • 相关阅读:
    电商项目面试题 及mysql面试题 太难没啥用
    fastDFS配置及日志查看 所遇到的问题
    fastDFS
    比较难的问题
    基础面试题
    难度比较大的面试题(2)
    项目功能介绍 非常有用
    Hibernate和Mybatis区别 详细 有用
    mysql和oracle的区别
    TCP/IP Note4
  • 原文地址:https://www.cnblogs.com/regit/p/13674096.html
Copyright © 2011-2022 走看看