[nginx] 如何讓 $remote_addr 辨認出正確的 client 端 ip 而不是 cdn(cloudflare) ip

當在架設網站時,時常會幫網站前面架設一層 cdn(cloudflare),好處是 cdn 作為第一層接收使用者端的請求既可以隱藏伺服器真實 ip,更可以加速各地區的網站載入速度。 反之,多了一層 cdn 可能讓你更難存取到真實的使用者資訊,比如導致在網頁伺服器看到的 access.log 其中 $remote_addr 都是來自 cdn 廠商的 ip,例如:162.158.162.90 造成這個問題的原因,可以參考以下圖片的流程: 原來的使用者 IP 為: 1.1.1.1 / 2.2.2.2 由於經過 cloudflare 的 cdn 伺服器(4.4.4.4)存取後,導致 Logs 充斥 4.4.4.4 的 $remote_addr 為了解決這個問題 cloudflare 官方有提供在各網頁伺服器該如何設定正確的 mods 解決此問題 這邊以 ubuntu 的 nginx 設定為例 2. 重新讀取 nginx 設定 設定大功告成 ~ 重新檢查 access.log 的 $remote_addr 是否後就會正確抓到使用者 ip 了 […]

Continue reading