nginx_proxy.png

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

安装Nginx

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

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

#这里使用的是军哥的lnmp
wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh nginx

反向代理配置

反向代理通俗点你把它理解成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做如下修改:

vi /etc/hosts
192.168.1.100   www.moewah.com

分别在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 反向代理缓存加速


相关推荐

  1. ngx_waf:一款高大全的 Nginx 网站防火墙模块
  2. GO-FLY:可替代百度商桥的免费在线客服系统!
  3. LNMP 编译安装 ngx_pagespeed 模块给网站提速!
  4. TeaWeb-可视化web代理服务及资源监控
  5. 如何彻底禁止百度等搜索引擎收录
  6. Nginx 查看并发连接数的两种方法
文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/963.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。