1. 程式人生 > >nginx反向代理後端web服務器記錄客戶端ip地址

nginx反向代理後端web服務器記錄客戶端ip地址

spa gin nginx反向代理 lan form https 記錄 客戶端訪問 use

nginx在做反向代理的時候,後端的nginx web服務器log中記錄的地址都是反向代理服務器的地址,無法查看客戶端訪問的真實ip。

在反向代理服務器的nginx.conf配置文件中進行配置。

 location /bbs {
            proxy_pass http://192.168.214.131/bbs;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

在後端的nginx web服務器上,要確認nginx有沒有編譯安裝 --with-http_realip_module模塊。

realip 模塊的作用是:當本機的nginx處於一個反向代理的後端時獲取到真實的用戶IP。

如果沒有realip模塊,nginx的access_log裏記錄的IP會是反向代理服務器的IP,PHP中$_SERVER[‘REMOTE_ADDR’]的值也是反向代理的IP。

而安裝了realip模塊,並且配置正確,就可以讓nginx日誌和php的REMOTE_ADDR都變成真實的用戶IP。

如果後端nginx沒有安裝realip模塊,可以在線平滑添加新模塊

nginx添加realip模塊,(這裏是後端web服務器)
先查看已經編譯過的模塊 /usr/local/webserver/nginx/sbin/nginx -V

1、cd nginx-1.8.0
2 、/configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre=/mnt/lnmp/pcre-8.31 --with-http_realip_module 3、 3、make --不要make install 否則會覆蓋以前的配置文件

4 、 cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

5、 cp objs/nginx /usr/local/nginx/sbin/ #如果出現 “nginx正在忙的提示” 先停止nginx運行
6、 /usr/local/nginx/sbin/nginx -V
7、 /usr/local/nginx/sbin/nginx

  

然後在後端nginx web服務器的nginx.conf配置文件中進行修改。

          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          set_real_ip_from 192.168.214.132;          #set_real_ip_from指令是告訴nginx,10.10.10.10是我們的反代服務器,不是真實的用戶IP
          real_ip_header X-Real-IP;                  #real_ip_header則是告訴nginx真正的用戶IP是存在X-Forwarded-For請求頭中
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


同時啟用web服務器的日誌記錄,使用默認即可。

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;

    access_log  logs/access.log  main;

....

  

ngx_http_realip_module使用詳解

https://leo108.com/pid-2132/

nginx反向代理後端web服務器記錄客戶端ip地址