宝塔利用nginx反向代理创建CDN

折腾记录
718 0

宝塔利用nginx反向代理创建CDN

配置HOST

我这边教的是比较便捷的方式,首先在宝塔面板里安装可以便捷修改host文件的工具箱.
经过测试,在宝塔后台安装第三方插件 吴先森[我的工具箱] 即可 ~
设置 - Hosts编辑 - 添加IP地址(源站IP) 添加域名 (源站域名)

宝塔端创建站点

添加站点 - 域名就写源站域名 - 配置SSL (使用源站相同的SSL即可)

添加反向代理

目标URL(源站URL,如果开启了SSL,记得带上https) - 发送域名 (源站域名)

反向代理配置

因为反代,默认会发带静态文件,如html 会造成的问题,比如登录了,刷新页面还是未登录状态.所以要改动下配置
在 站点修改-反向代理-点击配置文件
具体配置如下:

#PROXY-START/
location ~* \.(php|jsp|cgi|asp|aspx)$
{
    proxy_pass https://源站域名;
    proxy_set_header Host $host;
    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 /
{
    #缓存媒体文件
    location ~* .jpg|.png|.gif|.jpeg|.ttf|.webp|.woff|.woff2|.ico|.css|.js$
    {
    proxy_pass https://源站域名;
    proxy_set_header Host $host;
    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;
    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 360m;
    expires 12h;
    }
    
    proxy_pass https://源站域名;
    proxy_set_header Host $host;
    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 Nginx Cache
    proxy_ignore_headers Set-Cookie Cache-Control expires;
    add_header Cache-Control no-cache;
    expires 12h;
}

#PROXY-END/

按如上操作即可完成反代CDN,有很多国外小鸡,大多数专门用来做CDN节点的我都采用了kanglke,但是个别vps 已经装了宝塔的话,也可以用宝塔的环境配置CDN 达到相同的效果!

2022-1-27>
PS:发现反向代理的时候经常504..搜索教程发现 可能是因为源站响应时间过长,导致的超时,所以更下配置

#PROXY-START/
location ~* \.(php|jsp|cgi|asp|aspx)$
{

    proxy_pass https://img.fxb.cc;
    proxy_set_header Host $host;
    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;
    proxy_connect_timeout       300;
    proxy_send_timeout          300;
    proxy_read_timeout          300;
    send_timeout                300;
}
location /
{
    #缓存媒体文件
    location ~* .jpg|.png|.gif|.jpeg|.ttf|.webp|.woff|.woff2|.ico|.css|.js$
    {
    proxy_pass https://img.fxb.cc;
    proxy_set_header Host $host;
    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;
    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 360m;
    expires 12h;
    }
    
    proxy_pass https://img.fxb.cc;
    proxy_set_header Host $host;
    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 Nginx Cache
    proxy_ignore_headers Set-Cookie Cache-Control expires;
    add_header Cache-Control no-cache;
    expires 12h;
}

#PROXY-END/

2022-07-13>根据MJJ大佬的说法: (当然,我觉得如果源站IP喜欢变动的话相对来说会更麻烦)
其实改hosts并不合适,虽然也可以做到一样的效果,但是更合理的做法是,反代地址填ip,然后再传递一个header头Host到后端的机器,例如这样

location / {
    proxy_pass https://10.10.10.103;
    proxy_set_header Host "xx.xx.cn";
}

企业官网反向配置

登录查看隐藏内容

其他代码解释 - Nginx静态资源缓存

在 Nginx网站配置文件中添加如下代码:

location ~ .*.(gif|jpg|jpeg|png|webp|woff2|woff|bmp|swf)$
{
expires 30d;
error_log off;
access_log /dev/null;
}

location ~ .*\.(js|css)?$
{
expires 30d;
error_log off;
access_log /dev/null;
}

expires 30d; 意思是文件缓存时间 30天,expires语法举例如下:

expires 60s; #缓存60秒
expires 10m; #缓存10分钟
expires 12h; #缓存12小时
expires 365d; #缓存365天

设置完成后,必须重启Nginx才能生效。

以宝塔面板为例,默认已自动添加下图中的静态文件缓存规则,你只需根据自己网站需要进行微调即可。

也可以把其他静态文件后缀名添加进去。

登录查看隐藏内容

https://blog.fxb.cc/66.html
最后更新 2024-04-02
评论 ( 0 )
问:伍 + 叁 = ?
OωO
隐私评论