Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

CentOS 7 搭建 Nginx 反向代理 + proxy_cache CDN 節點完整實戰教學

編輯:關於 Linux

企業級 CDN 節點可透過 Nginx proxy_cache 模組實現靜態資源緩存、回源加速、負載分發。本文提供從作業系統精簡、防火牆、編譯工具鏈、Nginx 來源碼編譯 (含 ngx_cache_purge 清除模組)、緩存策略配置到驗證的完整生產級部署流程。

CDN 架構拓撲圖

環境規劃

角色IP說明
Web 來源站 61.188.87.100 域名 www.win8.net 實際內容伺服器
Nginx CDN 節點 192.168.190.128 CentOS 7、對外提供服務
客戶端測試機 192.168.190.1 Windows 7、修改 hosts 指向 CDN 節點

客戶端 Hosts 設定

C:\Windows\System32\drivers\etc\hosts
# 新增一行
192.168.190.128 www.win8.net

CDN 節點部署步驟

1. 關閉 SELinux

vim /etc/selinux/config
# SELINUX=enforcing → 註解
# SELINUXTYPE=targeted → 註解
SELINUX=disabled  # 新增
:wq
shutdown -r now

2. 防火牆開放 80/443 埠

vim /etc/sysconfig/iptables
# 新增
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
/etc/init.d/iptables restart

3. 安裝編譯工具鏈與相依套件

yum install -y wget make gcc gcc-c++ zlib-devel openssl-devel pcre-devel gd-devel kernel-devel keyutils-libs-devel patch perl

4. 目錄慣例

  • 原始碼存放:/usr/local/src
  • 編譯安裝前綴:/usr/local/軟體名

5. 下載原始碼

cd /usr/local/src
# Nginx 穩定版
wget https://nginx.org/download/nginx-1.8.0.tar.gz
# PCRE (支援 rewrite)
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.35.tar.gz
# ngx_cache_purge (手動清除指定 URL 緩存)
wget https://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz

6. 編譯安裝 PCRE

mkdir /usr/local/pcre
tar zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure --prefix=/usr/local/pcre
make && make install

7. 編譯安裝 Nginx (含 cache_purge 模組)

groupadd www
useradd -g www www -s /bin/false

cd /usr/local/src
tar zxvf ngx_cache_purge-2.3.tar.gz
tar zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0

./configure \
  --prefix=/usr/local/nginx \
  --user=www --group=www \
  --with-http_stub_status_module \
  --with-http_ssl_module \
  --with-pcre=/usr/local/src/pcre-8.35 \
  --add-module=../ngx_cache_purge-2.3

make && make install

關鍵:--with-pcre 指向**原始碼解壓目錄**而非安裝目錄,否則會報錯。

8. 啟動與權限設定

/usr/local/nginx/sbin/nginx
chown www:www -R /usr/local/nginx/html
chmod 700 -R /usr/local/nginx/html

9. 核心緩存配置 (nginx.conf 片段)

http {
    # 緩存區定義
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=cdn_cache:100m inactive=1d max_size=10g;
    proxy_temp_path /data/nginx/temp;

    # 上游伺服器
    upstream backend {
        server 61.188.87.100:80;
    }

    server {
        listen 80;
        server_name www.win8.net;

        location / {
            proxy_pass https://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            # 緩存策略
            proxy_cache cdn_cache;
            proxy_cache_valid 200 302 1h;
            proxy_cache_valid 404 1m;
            proxy_cache_key $scheme$proxy_host$request_uri;
            add_header X-Cache-Status $upstream_cache_status;

            # 清除緩存介面 (需 ngx_cache_purge)
            location ~ /purge(/.*) {
                allow 127.0.0.1;
                deny all;
                proxy_cache_purge cdn_cache $scheme$proxy_host$1$is_args$args;
            }
        }
    }
}

10. 測試驗證

# 1. 首次請求 (MISS)
curl -I https://www.win8.net/style.css
# HTTP/1.1 200 OK
# X-Cache-Status: MISS

# 2. 二次請求 (HIT)
curl -I https://www.win8.net/style.css
# X-Cache-Status: HIT

# 3. 手動清除緩存
curl "https://www.win8.net/purge/style.css"
# 輸出 "Successful purge" 表示清除成功

生產環境優化建議

  • HTTPS 終結:CDN 節點配置 SSL 憑證,回源可用 HTTP 或 HTTPS
  • 緩存分級:依檔案類型設定不同 proxy_cache_valid 時間 (圖片/JS/CSS 長、HTML 短)
  • 防盜鏈:valid_referers + if ($invalid_referer) { return 403; }
  • 監控告警:整合 Prometheus nginx-vts-exporter 監控緩存命中率、流量、錯誤率
  • 多節點同步:使用 ngx_cache_purge 配合中央管控 API 實現集群緩存同步清除

完成部署後,即擁有一個高效能、可手動/自動清除緩存的企業級 CDN 加速節點。

Copyright © Windows教程網 All Rights Reserved