Nginx replace REMOTE_ADDR with X-Forwarded-For

后端 未结 4 2018
逝去的感伤
逝去的感伤 2020-12-15 04:57

I am quite new to Nginx, and it seems all so confusing. I have my server setup perfectly, but the problem is, since my server is protected using a HTTP proxy; instead of log

4条回答
  •  盖世英雄少女心
    2020-12-15 05:50

    $http_x_forwared_for might contain multiple ip addresses, where the first one should be the client ip. REMOTE_ADDR should only be the client ip.

    So by using regex in your nginx.conf, you can set REMOTE_ADDR to the first ip of $http_x_forwarded_for like so:

      set $realip $remote_addr;
      if ($http_x_forwarded_for ~ "^(\d+\.\d+\.\d+\.\d+)") {
        set $realip $1;
      }
      fastcgi_param REMOTE_ADDR $realip;
    

提交回复
热议问题