温馨提示×

如何在LNMP中配置CDN

小樊
35
2025-12-29 18:35:51
栏目: 云计算

在 LNMP 中接入 CDN 的实操指南

一 架构选择与准备

  • 推荐将 CDN 放在用户与源站之间:用户 → CDNNginx/PHP-FPM(LNMP)。这样可利用 CDN 的缓存与回源能力,降低源站负载、提升访问速度。若采用云 CDN,通常支持添加 泛域名(如:*.example.com) 作为加速域名,便于统一管理子域名。业务类型需与实际内容匹配(如网站、下载、点播),一个加速域名仅能选择一个业务类型;若同时需要点播与下载,可创建两个加速域名分别接入。CDN 侧提供 刷新预热 能力,用于主动失效缓存或将热点内容提前分发至边缘节点。

二 接入步骤

  • 步骤1 源站准备
    • 确保 Nginx 正常运行并对外提供 HTTP/HTTPS 服务;PHP 通过 PHP-FPM 处理动态请求(LNMP 常规形态)。
  • 步骤2 在 CDN 控制台添加加速域名
    • 业务类型选择:网站(含 PHP 等动态内容)、文件下载点播 等;若需同时覆盖两类业务,创建两个加速域名分别接入。
    • 回源方式:可选 HTTPHTTPS;若选择 HTTPS 回源,源站需部署有效证书;部分平台提供 协议跟随 选项,便于与源站保持一致。
    • 回源 Host:填写源站对外提供服务的 域名或 IP(与源站虚拟主机配置一致)。
  • 步骤3 配置回源与缓存策略
    • 缓存规则:对静态资源(如 .js/.css/.png/.jpg 等)设置较长 Cache-Control/Expires;对动态页面(如 .php)通常设为 不缓存短 TTL;对登录、购物车、支付等页面设置 不缓存
    • 忽略查询串缓存:可按需开启(如将 ?v= 这类版本参数忽略),提升命中率。
  • 步骤4 域名解析切换
    • 将加速域名 CNAME 到 CDN 提供的域名;待解析生效后,流量即经 CDN 回源到 LNMP 源站。
  • 步骤5 验证
    • 访问网站检查是否命中 CDN(响应头常见 X-Cache: HIT/MISS 等);使用不同网络/地区验证回源与回退是否正常。

三 Nginx 与源站关键配置

  • 回源协议与 Host 头
    • 在源站 Nginx 的 server 配置中显式设置 server_name 与回源友好头,便于 CDN 回源成功与日志识别:
      server {
          listen 80;
          server_name www.example.com;
          location / {
              root /usr/share/nginx/html;
              index index.php index.html;
          }
          # 若 CDN 使用 HTTPS 回源,请开启 443 并部署证书
          # listen 443 ssl http2;
          # ssl_certificate /path/fullchain.pem;
          # ssl_certificate_key /path/privkey.pem;
      }
      
  • 获取真实客户端 IP
    • 若链路包含 CDN/代理,需在源站 Nginx 启用 ngx_http_realip_module,并信任 CDN 的回源 IP 段(以平台提供的回源 IP 列表为准):
      set_real_ip_from  203.0.113.0/24;   # 示例:替换为 CDN 回源网段
      set_real_ip_from  198.51.100.0/24;
      real_ip_header    X-Forwarded-For;
      real_ip_recursive on;
      
    • 若链路中还有 WAF,可能还需在 Nginx 侧使用 proxy_set_header 调整发往上游的请求头,确保回源与鉴权正常。

四 多节点与静态资源一致性

  • 多 Web 节点场景
    • 用户上传的图片、附件等静态资源若只落在单台 Web 节点,会导致其他节点访问不到。建议将静态目录(如 wp-content/uploads)集中到 NFS 或对象存储,并挂载到所有 Web 节点,保证一致性与可扩展性。
  • 示例 NFS 挂载(简要)
    • 服务端:共享目录 /data/wp,允许内网网段访问,映射为统一 www 用户;客户端将 /code/wordpress/wp-content/uploads 挂载到 10.0.0.10:/data/wp,并确保目录权限与属主正确,避免上传失败。

五 常见问题与运维要点

  • 命中率优化
    • 避免源站设置 Cache-Control: no-cache/no-store 导致 CDN 无法缓存;合理设置 Cache-Control/Expires路径/文件类型 规则;必要时开启 忽略查询串 缓存。
  • 刷新与预热
    • 上线新版本或修复静态资源时,使用 URL 刷新 主动失效旧缓存;对热点内容(如首页、活动页、大文件)使用 预热 提前分发至边缘节点,降低首访延迟。
  • HTTPS 与证书
    • 若源站启用 HTTPS 回源,务必部署有效证书;若使用云 CDN 的 HTTPS,可在 CDN 控制台上传自有证书(常见为 fullchain.pemprivkey.pem),并确保私钥未加密;部分平台支持 强制跳转 HTTPS协议跟随,按业务与安全要求选择。

0