人生就是由众多的细节组成的
正因为是个细节,所以常被人所淡忘

BT宝塔Nginx反向代理导致WordPress登陆问题 反向代理缓存目录设置介绍

可能大家很多都喜欢用BT宝塔面板做站,其中比较受大家欢迎的有BT宝塔面板里的反向代理功能,非常简单实用,直接配置就可以用,关于反向代理的步骤,之前也介绍过

但是因为BT宝塔面板自带的反向代理默认是利用Nginx的反向代理原理,因此默认的配置存在一些问题,如下:

  1. 关闭缓存后仍然缓存;
  2. 开启反向代理缓存后不能正常登陆WordPress;
  3. 无法针对某个目录进行针对性缓存;

针对于以上问题,一直在捣鼓和研究,后来终于解决了。现在分享给大家对应的配置方法。

缓存问题原因分析

其实以上问题都是针对缓存的配置所导致的。因为Nginx的缓存配置默认直接在代码里面配置,BT宝塔面板则是分开设置,最终组合在一起导致缓存的问题。

宝塔官方是默认对JS/CSS等静态文件缓存,但是如果设置了WordPress伪静态的话,那将会对页面也缓存进去。比如设置某个页面伪静态后地址为https://www.paizishop.com/1.html,那么该页面就被缓存了,因此就会导致不能正常登陆WordPress。因为缓存的页面默认是没有登录的状态,你再次访问则为缓存页面。

反向代理配置文件

#PROXY-START/
location /
{
    #缓存媒体文件
    location ~* .jpg|.png|.gif|.jpeg|.ttf|.webp|.woff|.woff2|.ico$
    {
        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_pass https://www.paizishop.com;
        proxy_cache cache_one;
    	proxy_cache_valid 30d;
        proxy_ignore_headers Cache-Control;
    	add_header X-Cache "$upstream_cache_status from $server_addr";
    }

    #缓存css、js、html
     location ~* .css|.js|.html$
    {
        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_pass https://www.paizishop.com;
        proxy_cache cache_one;
    	proxy_cache_valid 3d;
        proxy_ignore_headers Cache-Control;
    	add_header X-Cache "$upstream_cache_status from $server_addr";
    }

    proxy_pass https://www.paizishop.com;
    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 30s;
    #proxy_read_timeout 86400s;
    #proxy_send_timeout 30s;
    #proxy_http_version 1.1;
    #proxy_set_header Upgrade $http_upgrade;
    #proxy_set_header Connection "upgrade";

    #add_header X-Cache $upstream_cache_status;

    #expires 12h;
}

#PROXY-END/

针对以上代码的说明

因为宝塔里的反向代理文件默认是全局缓存,我们没有用其代码,直接采用分类缓存的方式。大家只需将上面的域名换成自己的域名即可,如果需要修改缓存的话可以根据以上缓存类型进行更换即可。

比如不希望缓存html,缓存的话容易出现WordPress登陆后还是显示没有登陆的界面问题。那么就可以将以上代码的html部分去掉即可。

如何对某些目录设置不缓存

比如我们不希望缓存网站的某些目录,比如不希望缓存站点下的wp-admin文件夹。那么可以进行相应的设置,将如下代码加入最后

location /wp-admin {
proxy_pass https://www.paizishop.com;
proxy_cache_valid any 0s;
}

如果有多个目录的话,那么分别增加如上代码即可。

缓存代理总结

BT宝塔面板的图形化界面给各个站长带来了很好的体验,简单易懂,可以让一个小白熟悉后马上变成网站设置的高手,但是毕竟一些代码配置的基础大家还是需要去掌握的。以上是纯代码的解决办法。当然,如果希望用CDN进行网站加速的话,还是建议购买专业CDN,加速效果会更好。
打开站点——反向代理——配置文件——添加两行代码——保存

添加的代码:
proxy_ssl_server_name on;
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

如果是wordpress需要在配置文件里设置一下缓存规则,防止登录不了后台。

location ^~ /wp-admin { proxy_pass https://域名; proxy_cache_valid any 0s; }
mkdir -p /usr/local/nginx/caches/maotao.net

//测试案例
proxy_cache_path /usr/local/nginx/caches/moec.top levels=1:2 keys_zone=laoxong:1m inactive=2h max_size=500m;

proxy_cache_path /path/to/cache(缓存路径) levels=1:2 keys_zone=my_cache:10m max_size=1g(最大大小) inactive=60m use_temp_path=off;
proxy_cache laoxong(缓存区域名);

进入宝塔的反向代理控制页面

选中出现 SSL_do_handshake() failed 的代理的“编辑配置”

在 proxy_set_header REMOTE-HOST $remote_addr; 下一行加入 proxy_ssl_server_name on;

保存,重启Nginx 即可,现在你就可以正常反代拉!

万能反代

测试没问题, 我常用的配置

 location ^~ /
{
    proxy_cache off;                                   # 禁用代理缓存
    proxy_set_header Sec-Fetch-Mode "navigate";
    proxy_set_header Sec-Fetch-Site "cross-site";
    proxy_set_header Cache-Control "max-age=0";
    proxy_set_header Accept-Encoding "gzip,deflate";
    gzip_disable ".";
    expires -1;                                        # 禁用页面缓存
    proxy_pass https://www.69shu.pro;                     # 反代目标 URL
    proxy_ssl_server_name on;
    sub_filter_last_modified off;                      # 删除原始响应里的浏览器缓存值
    sub_filter_once off;                               # 替换所有匹配内容
    sub_filter_types *;   
    # 匹配任何 MIME 类型
}
赞(0) 打赏
未经允许不得转载:毛桃博客 » BT宝塔Nginx反向代理导致WordPress登陆问题

评论 抢沙发

评论前必须登录!

 

实践是学习的最佳途径

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

了解更多看平潭

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册