说明:博客刚刚搬到了美西,感觉速度不如香港,于是准备拿香港的服务器自建CDN
加速了,对于自建CND
,之前讲过Fikker
,查看:CentOS安装Fikker自建CDN系统,支持Https/反向代理/防CC攻击,使用非常方便,功能也很强大,不过免费版不支持页面缓存、也不支持HTTP/2
,所以放弃了。就使用Nginx
反向代理实现自建CDN
加速了,这里分享下方法。
安装
1、安装Nginx
#这里使用的是军哥的lnmp
wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh nginx
2、CDN配置
假如我需要对www.moerats.com
搭建CDN
节点,数据放在192.168.1.100
,需要先修改hosts
指向,告知CDN
节点去哪里去获取网站数据,也就是回源地址,做如下修改:
vi /etc/hosts
192.168.1.100 www.moerats.com
然后创建nginx
配置文件moerats.com.conf
。
#创建缓存目录
mkdir -p /data/wwwroot/caches/www.moerats.com
#设置缓存目录权限
chown -R www:www /data/wwwroot/caches/www.moerats.com
#创建moerats.com.conf
vi /usr/local/nginx/conf/vhost/moerats.com.conf
在moerats.com.conf
中添加下面的内容,缓存目录/缓存时间请根据实际情况调整。
proxy_cache_path /data/wwwroot/caches/www.moerats.com levels=1:2 keys_zone=Rats:50m inactive=30m max_size=50m;
server {
listen 80;
server_name www.moerats.com;
charset utf-8,gbk;
location / {
proxy_set_header Accept-Encoding "";
proxy_pass https://www.moerats.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 Rats;
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;
}
}
参数说明:
/data/wwwroot/caches/www.moerats.com:为缓存目录
levels:指定该缓存空间有两层hash目录,第一层目录为1个字母,第二层为2个字母。
keys_zone=Rats:50m:为缓存空间起个名字,这里取名为“Rats”,后面的50m指内存缓存空间
inactive=30m:如果30分钟内该资源没有被访问则删除
max_size=50m:指硬盘缓存大小为50MB
proxy_cache_valid:指定状态码缓存时间,前面写状态码,后面写缓存时间。
然后重启Nginx
生效
lnmp nginx reload
3、Https配置
如果是https
网站,配置文件参考:
proxy_cache_path /data/wwwroot/caches/www.moerats.com levels=1:2 keys_zone=Rats:50m inactive=30m max_size=50m;
server {
listen 443 ssl http2;
ssl_certificate /home/moerats.com.crt;
ssl_certificate_key /home/moerats.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.moerats.com;
access_log /data/wwwlogs/moerats.com_nginx.log combined;
charset utf-8,gbk;
location / {
proxy_set_header Accept-Encoding "";
proxy_pass https://www.moerats.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 Rats;
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;
}
你也可以使用多台VPS
,利用CloudXNS
智能解析,将不同地区的DNS
解析到最近的VPS
上,进行CND
加速。
版权声明:本文为原创文章,版权归 Rat's Blog 所有,转载请注明出处!
本文链接:https://www.moerats.com/archives/575/
如教程需要更新,或者相关链接出现404,可以在文章下面评论留言。
大佬,没有模块“ngx_cache_purge”也能缓存的么?
好像没这个模块,你加配置进去就有问题
用了这个数据,更新文章后数据有时更新,有时不更新。不知道是什么问题?
应该是受到缓存影响
按上面的设置不应该是1秒更新一次吗?我清空本地缓存也一样。(一般就晚上有这种问题,白天没有。)
大佬问下,用了nginx反代加速之后,前台登录一直显示密码错误(但是输入的密码是正确的),问下这个问题该怎么解决,谢谢
这个看是不是缓存造成的,可以f12看下控制台
我重装系统然后重新做了反代,,密码还是显示错误。但如果直接进/admin输入账户密码,就可以登陆。。。搞不懂
楼主,宝塔搭的typecho的数据是在哪
左侧数据库入口
ssl_dhparam楼主我没有这个怎么办
没有可以不要,其实可以照搬宝塔的ssl配置,其它照葫芦画瓢就行
宝塔申请的证书是两个pem文件可不可以
请问如果,我用作cdn的香港机子已经用宝塔搭了网站,然后按着你这样改配置,我网站会不会出问题
不会,没啥问题,尽管配置。
如果源站有多个站点,可添加proxy_set_header Host $server_name区别开