Nginx CDN
Nginx 与 CDN(内容分发网络)集成,可以通过两种方式实现:配置 Nginx 作为 CDN 的源站和将 Nginx 作为 CDN 的缓存节点,以下是详细的配置步骤和相关解释。
一、Nginx 作为 CDN 的源站
1、安装 Nginx
sudo apt update sudo apt install nginx
2、配置 Nginx
编辑 Nginx 配置文件(例如/etc/nginx/sites-available/default
),添加需要分发的内容。
server { listen 80; server_name yourdomain.com; location / { root /var/www/html; index index.html; } }
保存并重启 Nginx:
sudo systemctl restart nginx
3、配置 CDN
在 CDN 管理控制台中,添加你的站点域名,并将源站指向 Nginx 服务器的 IP 地址或域名。
二、Nginx 作为 CDN 的缓存节点
1、安装 Nginx 和 Squid(可选)
除了 Nginx,你还可以安装 Squid 作为高性能的缓存服务器。
sudo apt install squid
2、配置 Nginx
编辑 Nginx 配置文件,使其反向代理到 Squid 或直接到源站。
server { listen 80; server_name yourcdn.com; location / { proxy_pass http://127.0.0.1:3128; # Squid 默认端口为 3128 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_set_header X-Forwarded-Proto $scheme; } }
3、配置 Squid(如果使用)
编辑 Squid 配置文件(例如/etc/squid/squid.conf
),启用缓存并设置缓存目录。
cache_dir ufs /var/spool/squid 100 16 256 cache_mem 256 MB
配置缓存规则:
refresh_pattern ^ftp: 1440 20% 4320 ignore_hierarchy refresh_pattern ^gopher: 1440 0% 4320 ignore_hierarchy refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 ignore_hierarchy
保存并重启 Squid:
sudo systemctl restart squid
三、测试和监控
1、测试配置
确保 Nginx 和 CDN 正常工作,可以通过访问配置的域名或 CDN 域名来测试。
curl -I http://yourcdn.com
2、监控和日志
定期检查 Nginx 和 CDN 的日志文件,确保没有错误或性能问题。
Nginx 日志通常位于/var/log/nginx/
,Squid 日志位于/var/log/squid/
。
四、常见问题及解决方案
1、缓存未命中
检查缓存规则设置是否正确,或者静态资源 URL 是否正确指向 CDN 域名。
2、SSL 证书问题
如果使用了 HTTPS,确保 CDN 支持 SSL,并正确配置 SSL 证书,大多数 CDN 提供免费 SSL 证书,或者支持自定义上传 SSL 证书。
3、访问控制
如果需要限制某些资源的访问,可以在 Nginx 配置文件中添加访问控制规则,如 IP 白名单、黑名单等。