在使用 Nginx 反向代理后,应用代码中获取到的 IP 都是反向代理服务器的 IP,获取到的域名也是反向代理配置的 url 域名

nginx反向代理配置时,一般会添加下面的配置:

      proxy_set_header Host $host;       proxy_set_header X-Real-IP $remote_addr;       proxy_set_header REMOTE-HOST $remote_addr;       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Nginx 配置

# upstream这个模块提供一个简单方法来实现在轮询和客户端IP之间的后端服务器负荷平衡。
upstream abc.com {
    server 127.0.0.1:8080;
    server 127.0.0.1:80;
    server 127.0.0.1:8000;
}

server {
    listen 80;
    server_name www.test.com;
    location / {
        proxy_pass http://abc.com;
        proxy_set_header    Host                 $host;             #保留代理之前的host
        proxy_set_header    X-Real-IP            $remote_addr;      #保留代理之前的真实客户端ip
        proxy_set_header    X-Forwarded-For      $proxy_add_x_forwarded_for;
        proxy_set_header    HTTP_X_FORWARDED_FOR $remote_addr;  #在多级代理的情况下,记录每次代理之前的客户端真实ip
        proxy_set_header    X-Forwarded-Proto    $scheme;          #表示客户端真实的协议(http还是https)
        proxy_redirect      default;                               #指定修改被代理服务器返回的响应头中的location头域跟refresh头域数值
}