首页 > nginx > nginx反向代理获取用户真实ip

nginx反向代理获取用户真实ip

2017年3月5日 发表评论 阅读评论

nginx做反向代理时,默认的配置后端获取到的ip都是来自于nginx,那么如何转发用户的真实IP到后端程序呢?
当前端使用nginx代理,后端使用php-fpm时,如果还是使用$_SERVER['REMOTE_ADDR'],那么php程序获取到的是nginx的ip地址,而不是用户的真实ip。

在nginx的配置文件中加入下面三个指令,这样后端php就可以使用$_SERVER['HTTP_X_REAL_IP']获取到访客的ip。

如果你想使用$_SERVER['REMOTE_ADDR'],不想修改代码,那么可以通过修改REMOTE_ADDR的值来实现。

经过多层代理后 $http_x_forwared_for 会含有多个ip,其中第一个ip是客户端的ip,REMOTE_ADDR只能是客户端的ip,所以可以用正则提取 $http_x_forwarded_for的第一个ip给REMOTE_ADDR:

分类: nginx 标签:
  1. 详详细细
    2021年8月11日09:57 | #1

    sb

  2. c_1708
    2017年4月26日20:58 | #2

    经过多层代理后应该是 $proxy_add_x_forwarded_for 会含有多个ip吧?

  3. 2017年3月27日16:43 | #3

    学习学习nginx相关配置。

  1. 2020年2月7日00:15 | #1
  2. 2020年5月11日23:04 | #2