使用Nginx反向代理,自建CDN加速节点 – 喵斯基部落

使用Nginx反向代理,自建CDN加速节点 – 喵斯基部落

nginx_proxy.png

Nginx 反向代理实现自建 CDN 加速了,这里分享下方法。下面的教程需要一点 linux 基础,如果您手里有不少闲置的 VPS 服务器,可以折腾试试。

安装 Nginx

需要在所有 CDN 服务器节点安装 Nginx,推荐使用 OneinStack 或军哥的 lnmp.org 一键包,如何安装 Nginx 自行参考脚本官网就行了。

这篇教程以军哥的 lnmp 一键包为环境,执行下面的命令安装即可。

反向代理配置

反向代理通俗点你把它理解成 CDN 节点就行了,此教程的流程示意图如下所示:

cdn_liucheng.png

这里用 4 台服务器作为解释:

  • 源站:192.168.1.100,就是网站数据真实存放的地方
  • CDN1:192.168.1.101(电信节点)
  • CDN2:192.168.1.102(联通节点)
  • CDN3:192.168.1.103(移动节点)

假如我需要对 www.moewah.com 搭建 CDN 节点,数据放在 192.168.1.100,需要先修改 hosts 指向,告知 CDN 节点从那里去获取网站数据,也就是回源地址,需要在 CDN1/CDN2/CDN3 做如下修改:

分别在 CDN1/CDN2/CDN3 下创建 nginx 配置文件 www.moewah.com.conf

  • #创建缓存目录

  • mkdir -p /data/wwwroot/caches/www_moewah_com

  • #设置缓存目录权限

  • chown -R www:www /data/wwwroot/caches/www_moewah_com

  • #创建www.moewah.conf

  • vi /usr/local/nginx/conf/vhost/www.moewah.com.conf

www.moewah.com.conf 中添加下面的内容,缓存目录 / 缓存时间请根据实际情况调整,后面会详细说明各参数含义。

  • proxy_cache_path /data/wwwroot/caches/www_moewah_com levels=1:2 keys_zone=moewah:50m inactive=30m max_size=50m;

  • server {

  • listen 80;

  • server_name www.moewah.com; #给CDN节点设置一个域名

  • charset utf-8,gbk;

  • location / {

  • proxy_set_header Accept-Encoding "";

  • proxy_pass https://www.moewah.com; #反代xx网站就填写xx域名记得带http或https协议

  • proxy_redirect off;

  • proxy_set_header X-Real-IP $remote_addr;

  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  • proxy_cache moewah;

  • proxy_cache_valid 200 304 30m;

  • proxy_cache_valid 301 24h;

  • proxy_cache_valid 500 502 503 504 0s;

  • proxy_cache_valid any 1s;

  • proxy_cache_min_uses 1;

  • expires 12h;

  • #缓存成功 X-Cache-STatus 就是HIT,读取数据没缓存就是 MISS

  • add_header X-Cache '$upstream_cache_status from $host';

  • proxy_connect_timeout 300;

  • proxy_send_timeout 300;

  • proxy_read_timeout 300;

  • }

  • }

  • /data/wwwroot/caches/www_moewah_com: 为缓存目录
  • levels: 指定该缓存空间有两层 hash 目录,第一层目录为 1 个字母,第二层为 2 个字母。
  • keys_zone=moewah:50m: 为缓存空间起个名字,这里取名为 “moewah”,后面的 50m 指内存缓存空间
  • inactive=30m: 如果 30 分钟内该资源没有被访问则删除
  • max_size=50m: 指硬盘缓存大小为 50MB
  • proxy_cache_valid: 指定状态码缓存时间,前面写状态码,后面写缓存时间。

最后别忘了重载 nginx 使配置生效,如果使用的 oneinstack 直接输入命令:service nginx reload,如果是军哥一键脚本输入:nginx -t 测试,如果有报错,可以贴出报错信息一起讨论下,通过测试后,输入 /etc/init.d/nginx reload 重载。

智能解析

假如您上面 CDN1/CDN2/CDN3 三个 CDN 节点都配置好了,在 CloudXNS 后台,将不同的运营商指向不同的节点,使其达到分发和缓存加速效果。

其它说明

解析后可以使用超级 ping 工具 ping.chinaz.com 测试各地解析是否生效,也可以本地修改 hosts 访问测试是否正常,同时分享下(www.moewah.com)的完整 CDN 配置:

  • proxy_cache_path /data/wwwroot/caches/www_moewah_com levels=1:2 keys_zone=moewah:50m inactive=30m max_size=50m;

  • server {

  • listen 443 ssl http2;

  • ssl_certificate /data/ssl/www.moewah.com/www_moewah_com.crt;

  • ssl_certificate_key /data/ssl/www.moewah.com/www_moewah_com.key;

  • ssl_session_timeout 1d;

  • ssl_session_cache builtin:1000 shared:SSL:10m;

  • ssl_dhparam /data/ssl/dhparam.pem;

  • ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

  • ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';

  • ssl_prefer_server_ciphers on;

  • ssl_stapling on;

  • ssl_stapling_verify on;

  • server_name www.moewah.com; #给CDN节点设置一个域名

  • access_log /data/wwwlogs/moewah.com_nginx.log combined;

  • charset utf-8,gbk;

  • location / {

  • proxy_set_header Accept-Encoding "";

  • proxy_pass https://www.moewah.com;#反代xx网站就填写xx域名记得带http或https协议

  • proxy_redirect off;

  • proxy_set_header X-Real-IP $remote_addr;

  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  • proxy_cache moewah;

  • proxy_cache_valid 200 304 30m;

  • proxy_cache_valid 301 24h;

  • proxy_cache_valid 500 502 503 504 0s;

  • proxy_cache_valid any 1s;

  • proxy_cache_min_uses 1;

  • expires 12h;

  • #缓存成功 X-Cache-STatus 就是HIT,读取数据没缓存就是 MISS

  • add_header X-Cache '$upstream_cache_status from $host';

  • }

  • }

  • server {

  • listen 80 default_server;

  • return 301 https://$host$request_uri;

  • }

扩展阅读

Nginx 反向代理缓存加速

本文标题 使用 Nginx 反向代理,自建 CDN 加速节点
若文章需要更新或相关链接出现 404 – 请联系 MoeWah
本站采用 “知识共享署名 – 非商业性使用 – 相同方式共享 4.0 中国大陆许可协议” 进行许可,转载请注明出处!