自建CDN加速-Nginx反向绑定
emer 发布于 2020-2-10 17:40 1820 次阅读
1.安装nginx
先在CDN节点上修改Hosts,目的就是告知CDN节点从那里去获取网站数据,也就是回源地址,修改如下:
vi /etc/hosts
192.168.1.100 www.wzfou.com
然后在CDN节点创建nginx配置文件wzfou.com.conf
#创建缓存目录
mkdir -p /data/wwwroot/caches/wzfou.com
#设置缓存目录权限
chown -R www:www /data/wwwroot/caches/wzfou.com
#创建wzfou.com.conf
vi /usr/local/nginx/conf/vhost/wzfou.com.conf
在wzfou.com.conf
中添加下面的内容,缓存目录/缓存时间请根据实际情况调整,后面会详细说明各参数含义。
proxy_cache_path /data/wwwroot/caches/wzfou.com levels=1:2 keys_zone=wzfou:50m inactive=30m max_size=50m;
server {
listen 80;
server_name wzfou.com;
charset utf-8,gbk;
location / {
proxy_set_header Accept-Encoding "";
proxy_pass https://wzfou.com;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache wzfou;
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;
}
}
1、
/data/wwwroot/caches/wzfou.com
:为缓存目录2、
levels
:指定该缓存空间有两层hash目录,第一层目录为1个字母,第二层为2个字母。3、
keys_zone=wzfou:50m
:为缓存空间起个名字,这里取名为“wzfou”,后面的50m指内存缓存空间 。4、
inactive=30m
:如果30分钟内该资源没有被访问则删除5、
max_size=50m
:指硬盘缓存大小为50MB6、
proxy_cache_valid
:指定状态码缓存时间,前面写状态码,后面写缓存时间。
最后重载nginx使配置生效,如果使用的oneinstack直接输入命令:service nginx reload
,如果是xiaoz一键脚本输入:/usr/local/nginx/sbin/nginx -s reload
。
三、Https站点反向代-理
上面分享的是Http站点的Nginx反向代-理设置,如果你是想反向代-理Https站点,你需要先为你的域名申请好SSL证书,接着你只需要设置好SSL证书路径,参考如下配置进行调整即可:
proxy_cache_path /data/wwwroot/caches/wzfou.com levels=1:2 keys_zone=wzfou:50m inactive=30m max_size=50m;
server {
listen 443 ssl http2;
ssl_certificate /data/ssl/wzfou/wzfou.com.crt;
ssl_certificate_key /data/ssl/wzfou/wzfou.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 wzfou.com;
access_log /data/wwwlogs/wzfou.com_nginx.log combined;
charset utf-8,gbk;
location / {
proxy_set_header Accept-Encoding "";
proxy_pass https://wzfou.com;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache wzfou;
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;
}
}
server {
listen 80 default_server;
return 301 https://$host$request_uri;
}
四、ngx_cache_purge清除更新缓存
清理Nginx缓存需要ngx_cache_purge模块帮助,可输入命令nginx -V
查看已经编译的模块,如果没有ngx_cache_purge
说明模块没有安装,则需要重新编译一下Nginx。
4.1 配置ngx_cache_purge
在server段内加入下面的配置,并重载Nginx,下面的wzfou
请与keys_zone
定义的值保持一致,否则nginx将无法启动。
location ~ /purge(/.*) {
allow all;
proxy_cache_purge wzfou $proxy_host$1$is_args$args;
error_page 405 =200 /purge$1;
}
如果想清理缓存,添加purge
参数即可,如https://www.xiaoz.me/purge/xxx.png
,如果该文件存在缓存,则会提示如下截图。若不存在缓存,则返回404,若无论什么情况均返回404,可能配置没成功。