nginx配置X-Forwarded-For 防止偽造ip


網上常見nginx配置ip請求頭

  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

風險: 用戶可以通過自己設置請求頭來偽造ip,比如用戶在發起http請求是自己測試請求頭x-forwarded-for:192.168.0.151。那么服務器通過x-forwarded-for獲取到的第一個ip就是用戶偽造的ip。

  防止偽造方案:

  情況1: 在只有1層nginx代理的情況下,設置nginx配置“proxy_set_header X-Forwarded-For $remote_addr;”。(此時$remote_addr獲取的是用戶的真是ip)

  情況2:在有多層反向代理的情況下,1)設置“最外層”nginx配置和情況1一樣“proxy_set_header X-Forwarded-For $remote_addr;”。2)除了最外層之外的nginx配置“proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;”。

  這樣就防止了用戶通過偽造請求頭來偽造真實ip。后台只需要從x-forwarded-for請求頭中取出第一個ip就是用戶的真實ip。后面如果有多個ip,就是反向代理的ip

 

 

同理:X-Real-IP也差不多。不同的是當只有1層nginx代理情況下只需配置“proxy_set_header X-Real-IP $remote_addr;”即可。當有多層反向代理時,只能在最外層代理設置“proxy_set_header X-Real-IP $remote_addr;”,如果在非最外層設置,則獲取到的是反向代理機器的ip


免責聲明!

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



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