當我們用nginx做反向代理時,通常后端真實服務器記錄的訪問IP其實都是nginx的IP, 當我們要分析訪問日志的時候一般只能通過查看nginx的日志, 但是當網站並發量比較大的時候,每次訪問都要將記錄到nginx的日志中,這樣會加大nginx的壓力, 所以我們可以關閉nginx的訪問日志, 然后通過設置讓后端真實服務器來記錄客戶端的IP.
配置如下:
1. 通過修改nginx的配置文件,使其將發送到后台服務器的請求頭部修改添加客戶端的IP , 並定義一個值.
[root@jenkins ~]# vim /etc/nginx/conf.d/linuxfan.conf #在代理的location中添加 proxy_set_header X-Real-IP $remote_addr; add_header X-Via $server_addr; #在客戶端的響應報文頭部添加X-Via參數,其值為代理服務器的IP [root@jenkins ~]# systemctl restart nginx
2. 修改后端真實服務器的日志格式,以httpd為例
[root@zabbix ~]# vim /etc/httpd/conf/httpd.conf LogFormat "%{X-Real-IP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined [root@zabbix ~]# systemctl restart httpd
3. 查看日志是否配置成功
192.168.0.12就是客戶端的IP,設置成功