前言
大家常用的 CDN 有很多種,而這其中包括了在 Google Cloud 裡的 Google Cloud CDN。與前幾天寫的 Cloudflare 類似,當這些 CDN 回源向你取得資料時,由網頁伺服器產生的 Log 是無法直接看到用戶的 IP 位址,你看到的應該會是 Google 伺服器的。這篇文章就是來解決這樣的問題。
設定方式
設定方式與 Cloudflare 類似,一樣前往伺服器上的 Nginx 資料夾增加一些內容。通常配置檔會放在 /etc/nginx/sites-enabled/
底下。
Google Cloud CDN 的回源段為 34.96.0.0/20
及 34.127.192.0/18
,但我們需要多設定由 Google 分配給你的 CDN 位址,如下圖。
且我們必須設定 real_ip_recursive on;
,原因是使用 Google Cloud CDN 時,X-Forwarded-For
裡會包含多個 IP 位址,所以我們下這個參數來排除掉信任的 IP 位址,也就是 set_real_ip_from
的這些。
以下是一個 Nginx 設定檔參考範本:
server {
listen 80;
server_name www.example.com;
# Google Cloud CDN Request Source Ranges
set_real_ip_from 34.96.0.0/20;
set_real_ip_from 34.127.192.0/18;
# Your Google Cloud CDN IP Address
set_real_ip_from 34.36.0.0;
set_real_ip_from 2600:1901:0:1234::;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
location / {
try_files $uri $uri/ =404;
}
}
接者,你可以使用 sudo nginx -t
來確定配置是否有問題。再使用 sudo systemctl restart nginx
重啟網頁伺服器即可。
結語
操作到這邊,你就算是完成囉!接著你可以在 /var/log/nginx
底下的 access.log
看到產出的 Log 為真實的用戶 IP 位址!