前言
Gcore CDN 是我次要使用的 CDN,主要還是 Cloudflare 在台灣與中華電信喬不攏的關係,導致繞美。而 Gcore 在台灣目前沒有據點,大部分台灣業者會連到香港去,因此延遲通常不會比 Cloudflare 免費版高。而這類 CDN 作為是反向代理的工具,當他回源向你取得資料時,網頁伺服器產生的 Log 是無法直接看到用戶的 IP 位址,你看到的應該會是 Gcore 伺服器的。這篇文章就是來解決這樣的問題。
Gcore IP 列表
Gcore CDN 的 IP 列表非常雜,他的 IPv4 是由一群 /32 所組成的,而 IPv6 也是由一群 /128 所組成的。因此後續在寫這些設定檔的時候會非常複雜。
你可以在 這個連結 查看到 Gcore CDN 目前的所有 IP 位址。
Nginx 的設定
由於 Gcore CDN 的 IP 段太多,我並不建議直接將他寫在每個網站的 Config 之中。我會建議你前往 /etc/nginx
資料夾底下建立一個文件名為 gcore.conf
,並將 IP 段都放在裡面。
cd /etc/nginx && sudo vim gcore.conf
內容則是類似於於下面這樣,我下面只有大概寫幾行,而你應該將他網站上的都寫在裡面。
# Gcore IPv4 List
set_real_ip_from 81.253.239.2/32;
set_real_ip_from 80.240.124.10/32;
...
# Gcore IPv6 List
set_real_ip_from 2a01:cfc4:0:7700::3/128;
set_real_ip_from 2a11:27c0:1a1:2803::182/128;
...
real_ip_header X-Forwarded-For;
接著我們要到各個網站的設定檔添加一行 include /etc/nginx/gcore.conf;
,通常配置檔會放在 /etc/nginx/sites-enabled/
底下。
以下是一個範例:
server {
listen 80;
server_name www.example.com;
# Gcore CDN
include /etc/nginx/gcore.conf;
location / {
try_files $uri $uri/ =404;
}
}
接者,你可以使用 sudo nginx -t
來確定配置是否有問題。再使用 sudo systemctl restart nginx
重啟網頁伺服器即可。
結語
操作到這邊,你就算是完成囉!接著你可以在 /var/log/nginx
底下的 access.log
看到產出的 Log 為真實的用戶 IP 位址!