• 2022-09-04被罚款200元记6分.
  • 特么的.电脑风扇坏了.快递还全部停发.太难了...求求了.疫情赶紧走吧.
  • 难啊难!要钱难!
  • 更新到WordPress5.6啦
  • 有点伤心了,今年净遇到王某海这种人.
  • 难啊难...
  • 七牛的JS SDK 的文档真坑啊.
  • 蓝奏云分享部分地区无法访问需手动修改www.lanzous.com变为:www.lanzoux.com
  • 好气啊~原来使用的CDN服务商莫名其妙的给我服务取消了~
  • 遇见一个沙雕汽车人.

[记录]利用反向代理优化境外访问速度

Linux KIENG 4年前 (2020-07-06) 44038次浏览 已收录 1个吐槽 扫描二维码

[记录]利用反向代理优化境外访问速度

原来用的 CDN 有境外节点,访问速度也很快.但是莫名其妙给我域名删除了(虽然是白嫖的) :-x

现在换成了华为云家的 CDN,该说不说国内访问比原来的速度快多了...但是境外访问实在是惨不忍睹.所有境外访问回应的节点都是北京节点.速度自然慢的很.

前几天一直都是利用 DNS 线路解析,境外但是用的 CF 的免费 CDN,虽然我设置了缓存但是还是很慢....

于是我就想利用我白嫖的香港服务器反向代理我这台国内的服务器.来加速境外缓存.

境内->CDN->源站

境外->香港服务器->CDN->源站

原来是想着

境外->香港服务器->源站,但是这样会无限跳转或错误,因为我设置 DNS 解析境外解析到香港服务器,当香港服务器反代境内服务器的时候,因为香港就是境外,这样就导致无限循环的错误了.但是反代 CDN 就不一样了.

好了,不多说了.说一下我的配置和一些坑.

以我使用的华为云 CDN 为例:

源站不用动.

然后在阿里云 DNS 解析添加一个记录:

[记录]利用反向代理优化境外访问速度

然后在境外服务器添加域名:

[记录]利用反向代理优化境外访问速度(正常添加就可以了)

然后点击:

[记录]利用反向代理优化境外访问速度

该说不说宝塔真实小白利器! :neutral:

添加反代

[记录]利用反向代理优化境外访问速度

发送域名(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 文件这样文章页也会缓存了...但是你修改的话需要自己删除. :-x

就是这样,先使用几天试试效果怎么样~~~ :-)


KIENG.CN , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA 4.0协议进行授权
转载请注明出处:[记录]利用反向代理优化境外访问速度
本文章链接:https://blog.kieng.cn/2506.html
喜欢 (7)
KIENG
关于作者:
一个热衷网络的Man
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 快速获取昵称
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 我的话是源站设在香港,毕竟境内服务器国外访问速度真的太慢了.国内的话通过声网的全球链路加速,cdn回源到他们境内节点,速度还ok
    jack | 中国广东 移动数据上网公共出口2022-05-17 22:58 回复 Linux | Chrome 99.0.4844.74