原来用的 CDN 有境外节点,访问速度也很快.但是莫名其妙给我域名删除了(虽然是白嫖的)
现在换成了华为云家的 CDN,该说不说国内访问比原来的速度快多了...但是境外访问实在是惨不忍睹.所有境外访问回应的节点都是北京节点.速度自然慢的很.
前几天一直都是利用 DNS 线路解析,境外但是用的 CF 的免费 CDN,虽然我设置了缓存但是还是很慢....
于是我就想利用我白嫖的香港服务器反向代理我这台国内的服务器.来加速境外缓存.
境内->CDN->源站
境外->香港服务器->CDN->源站
原来是想着
境外->香港服务器->源站
,但是这样会无限跳转或错误,因为我设置 DNS 解析境外解析到香港服务器,当香港服务器反代境内服务器的时候,因为香港就是境外,这样就导致无限循环的错误了.但是反代 CDN 就不一样了.
好了,不多说了.说一下我的配置和一些坑.
以我使用的华为云 CDN 为例:
源站不用动.
然后在阿里云 DNS 解析添加一个记录:
然后在境外服务器添加域名:
然后点击:
该说不说宝塔真实小白利器!
添加反代
发送域名(host)为博客域名,目标 URL 为 CDN 服务器给你的 cname 域名.
然后点击配置文件:
宝塔配置好的反代为:
#PROXY-START/ location ~* \.(php|jsp|cgi|asp|aspx)$ { proxy_pass https://blog.kieng.cn.**.***; proxy_set_header Host blog.kieng.cn; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; } location / { proxy_pass https://blog.kieng.cn.**.***; proxy_set_header Host blog.kieng.cn; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; add_header X-Cache $upstream_cache_status; #Set <a href="https://blog.kieng.cn/tag/nginx" title="查看更多关于 Nginx 的文章" target="_blank">Nginx</a> Cache proxy_ignore_headers Set-Cookie Cache-Control expires; proxy_cache cache_one; proxy_cache_key $host$uri$is_args$args; proxy_cache_valid 200 304 301 302 1h; expires 12h; } #PROXY-END/
这样就反代成功了,但是我们需要把静态文件都存到我们反代的服务器里面,要不然每次都去 CDN 那取费流量.
使用 proxy_store 模块.
配置如下(在反代配置文件里最下面加上):
#我们需要缓存的文件后缀,可以自己按照自己的情况配置 location ~*\.(png|jpg|gif|svg|jpeg|js|css|ttf|woff|eot)$ { #由于我还有别的网站调用了博客的 JS,所以就加了这个,可以去掉 add_header 的行 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; #所有链接,浏览器缓存过期时间为 365 天 expires 365d; #此目录为服务器的根目录,下面的 if 语句就是判断此目录下是否有响应的文件 root /www/wwwroot/blog.kieng.cn; #表示开启缓存 proxy_store on; #表示用户读写权限 proxy_store_access user:rw group:rw all:rw; #此处为文件的缓存路径,这个路径是和 url 中的文件路径一致的 proxy_temp_path /www/wwwroot/blog.kieng.cn; #发送的 host 就是博客域名 proxy_set_header Host blog.kieng.cn; #这句话的意思是请求时让源服务器不压缩数据,如果你开启了 gzip 的话必须加这个.要不然 CSS 和 JS 文件会乱码 proxy_set_header Accept-Encoding identity; if ( !-e $request_filename) { #此处为要被代理的服务器的地址 CDN 的 cname 地址 proxy_pass https://blog.kieng.cn.**.***; } }
这是我的配置,请自行更换你的域名
完整如下:
#PROXY-START/ location ~* \.(php|jsp|cgi|asp|aspx)$ { proxy_pass https://blog.kieng.cn.**.***; proxy_set_header Host blog.kieng.cn; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; } location / { proxy_pass https://blog.kieng.cn.**.***; proxy_set_header Host blog.kieng.cn; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; add_header X-Cache $upstream_cache_status; #Set <a href="https://blog.kieng.cn/tag/nginx" title="查看更多关于 Nginx 的文章" target="_blank">Nginx</a> Cache proxy_ignore_headers Set-Cookie Cache-Control expires; proxy_cache cache_one; proxy_cache_key $host$uri$is_args$args; proxy_cache_valid 200 304 301 302 1h; expires 12h; } #我们需要缓存的文件后缀,可以自己按照自己的情况配置 location ~*\.(png|jpg|gif|svg|jpeg|js|css|ttf|woff|eot)$ { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; #所有链接,浏览器缓存过期时间为 365 天 expires 365d; #此目录为服务器的根目录,下面的 if 语句就是判断此目录下是否有响应的文件 root /www/wwwroot/blog.kieng.cn; #表示开启缓存 proxy_store on; #表示用户读写权限 proxy_store_access user:rw group:rw all:rw; #此处为文件的缓存路径,这个路径是和 url 中的文件路径一致的 proxy_temp_path /www/wwwroot/blog.kieng.cn; #发送的 host 就是博客域名 proxy_set_header Host blog.kieng.cn; #这句话的意思是请求时让源服务器不压缩数据,如果你开启了 gzip 的话必须加这个.要不然 CSS 和 JS 文件会乱码 proxy_set_header Accept-Encoding identity; if ( !-e $request_filename) { #此处为要被代理的服务器的地址 CDN 的 cname 地址 proxy_pass https://blog.kieng.cn.**.***; } } #PROXY-END/
可以了.静态文件都缓存在这个香港服务器上,而动态文件都会请求源站.当然,你可以缓存.html 文件这样文章页也会缓存了...但是你修改的话需要自己删除.
就是这样,先使用几天试试效果怎么样~~~