分享關於用nginx做后端服務器時,日志記錄不到客戶機真實IP的問題


場景描述:

利用nginx做反向代理服務器,反向代理后端web服務器資源給用戶(也是nginx服務)。

問題:

啟用nginx服務的后端服務器web日志記錄不能正確的記錄客戶機發起訪問的IP地址,而是記錄nginx代理服務器的地址(內網);

解決方法:

調用nginx服務中的--with-http_realip_module 模塊

nginx -V

查看nginx版本以及所安裝的模塊,檢查是否帶有--with-http_realip_module模塊

 

我這邊是通過yum安裝的nginx,沒有指定模塊就默認全部安裝,所以包含該模塊;

如果不存在該模塊,請參考此篇文章:

yum安裝下的nginx,如何添加模塊,和添加第三方模塊 - caigan - 博客園 (cnblogs.com)

————————————————————————————

當模塊安裝完畢后;需要進行如下兩步操作:

一、在nginx代理服務器的location塊內,添加如下配置:

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服務器的http塊內、server塊外添加如下配置:

set_real_ip_from x.x.x.x;

x.x.x.x對應的ip地址為nginx代理服務器的地址。

進行上述兩步操作后,都需要重啟nginx服務;

systemctl restart nginx
service restart nginx

后續查看web服務器的nginx訪問日志就能正確記錄客戶機IP地址了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM