讓nginx反向代理能夠記錄來自客戶端的真實IP地址

上一節,我們說到了讓Nginx能夠正確識別用戶到底訪問的是哪個虛擬主機的域名,本章,我們討論一下,如何讓Nginx能夠記錄來自客戶端的真實IP地址。

1、首先,我們看一下httpd的訪問日誌,看看客戶端的IP地址是哪一個?

192.168.1.6 - - [29/Apr/2015:07:51:07 +0800] "GET / HTTP/1.0" 200 13
192.168.1.6 - - [29/Apr/2015:07:51:07 +0800] "GET / HTTP/1.0" 200 13
192.168.1.6 - - [29/Apr/2015:07:51:08 +0800] "GET / HTTP/1.0" 200 13

2、很容易,我們看到這個客戶端的IP地址,實際上反向代理Nginx服務器的IP地址,這給以後做apache的日誌分析的時候,代理很大的問題,因此,要解決這個問題,必須在Nginx的配置文件中,增加如下的指令。

  proxy_set_header X-Forwarded-For  $remote_addr

  proxy_set_header

3、默認httpd的日誌選項不能接收來自客戶端的真實IP地址,只接收nginx反向代理傳過來的IP地址,需要開啓接收功能

     httpd_logformat

4、按照下面的格式調整,httpd的日誌記錄格式

      LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

5、調整httpd的虛擬主機的日誌格式

      CustomLog logs/bbs.g.cn-access_log combined

6、重啓相關服務,使生效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章