实验:测试前端使用nginx做代理,在后端服务器上获取客户端真实IP

真实服务器:192.168.10.11

      192.168.10.14

代理服务器:192.168.10.12

 客 户 端:192.168.10.13

      192.168.10.2


1.在nginx代理服务器上设置

    upstream web {

       server 192.168.10.11;

       server 192.168.10.14;

       }

    

    server {

        listen       80;

        server_name  localhost;

        location / {

            proxy_pass http://web;

            proxy_set_header host      $host;

            proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;

            proxy_set_header X-real-ip    $remote_addr;

        }


2.在后端服务器设置    

    log_format  test1  '$remote_addr - $http_x_forwarded_for';

    access_log  logs/access.log  test1;


3.使用客户端访问代理服务器


4.查看后端服务器访问日志    

    192.168.10.12 - 192.168.10.13

    192.168.10.12 - 192.168.10.13

    192.168.10.12 - 192.168.10.2

    192.168.10.12 - 192.168.10.2

可以看出,真实服务器上的$remote_addr是代理的IP,$http_x_forwarded_for就是客户端的真实IP了.