找回密码
 立即注册

宝塔面板Nginx反向代理导致typecho后台无法登录的解决方法

2022-7-24 14:42:57 · 站长社区
宝塔面板大家都比较熟悉,非常简单实用,还可以利用nginx反代当自建CDN节点使用,但我在使用宝塔面板默认的Nginx缓存配置时遇到了一个问题:
  • 开启反向代理缓存后不能正常登陆typecho后台;
针对于这个问题,现在分享一下我的解决方法。

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

解决方法:
话不多说,直接分享出我的nginx配置代码,供大家参考,这里我们登录反向代理的宝塔面板,找到对应的网站,依次点击反向代理->配置文件
  1. #PROXY-START/
  2. location ~* \.(php|jsp|cgi|asp|aspx)$
  3. {
  4.     proxy_pass http://www.zhidianyun.cn;
  5.     proxy_set_header Host $host;
  6.     proxy_set_header X-Real-IP $remote_addr;
  7.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  8.     proxy_set_header REMOTE-HOST $remote_addr;
  9. }
  10. location /
  11. {
  12.     #缓存媒体文件
  13.     location ~* .jpg|.png|.gif|.jpeg|.ttf|.webp|.woff|.woff2|.ico|.css|.js|.html$
  14.     {
  15.     proxy_pass http://www.91linux.org;
  16.     proxy_set_header Host $host;
  17.     proxy_set_header X-Real-IP $remote_addr;
  18.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  19.     proxy_set_header REMOTE-HOST $remote_addr;
  20.     proxy_ignore_headers Set-Cookie Cache-Control expires;
  21.     proxy_cache cache_one;
  22.     proxy_cache_key $host$uri$is_args$args;
  23.     proxy_cache_valid 200 304 301 302 360m;
  24.     expires 12h;
  25.     }
  26.    
  27.     proxy_pass http://www.91linux.org;
  28.     proxy_set_header Host $host;
  29.     proxy_set_header X-Real-IP $remote_addr;
  30.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  31.     proxy_set_header REMOTE-HOST $remote_addr;
  32.    
  33.     add_header X-Cache $upstream_cache_status;
  34.     #Set Nginx Cache
  35.     proxy_ignore_headers Set-Cookie Cache-Control expires;
  36.     add_header Cache-Control no-cache;
  37.     expires 12h;
  38. }

  39. #PROXY-END/
复制代码
针对以上代码的说明
因为宝塔里的反向代理文件默认是对静态文件全局缓存,我们采用针对性缓存的方式。
比如不希望缓存html,缓存的话容易出现typecho登陆后还是显示没有登陆的问题。那么将以上代码的html部分去掉就可以解决这个问题了。

typecho伪静态规则如下
server.png

  1.     if (!-e $request_filename) {
  2.         rewrite ^/(?!onedrive)(.*)$ /index.php?s=$2 last;
  3.     }
复制代码


全部评论 0

宝塔面板大家都比较熟悉,非常简单实用,还可以利用nginx反代当自建CDN节点使用,但我在使用宝塔面板默认的Nginx缓存配置时遇到了一个问题:
  • 开启反向代理缓存后不能正常登陆typecho后台;
针对于这个问题,现在分享一下我的解决方法。

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

解决方法:
话不多说,直接分享出我的nginx配置代码,供大家参考,这里我们登录反向代理的宝塔面板,找到对应的网站,依次点击反向代理->配置文件
  1. #PROXY-START/
  2. location ~* \.(php|jsp|cgi|asp|aspx)$
  3. {
  4.     proxy_pass http://www.zhidianyun.cn;
  5.     proxy_set_header Host $host;
  6.     proxy_set_header X-Real-IP $remote_addr;
  7.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  8.     proxy_set_header REMOTE-HOST $remote_addr;
  9. }
  10. location /
  11. {
  12.     #缓存媒体文件
  13.     location ~* .jpg|.png|.gif|.jpeg|.ttf|.webp|.woff|.woff2|.ico|.css|.js|.html$
  14.     {
  15.     proxy_pass http://www.91linux.org;
  16.     proxy_set_header Host $host;
  17.     proxy_set_header X-Real-IP $remote_addr;
  18.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  19.     proxy_set_header REMOTE-HOST $remote_addr;
  20.     proxy_ignore_headers Set-Cookie Cache-Control expires;
  21.     proxy_cache cache_one;
  22.     proxy_cache_key $host$uri$is_args$args;
  23.     proxy_cache_valid 200 304 301 302 360m;
  24.     expires 12h;
  25.     }
  26.    
  27.     proxy_pass http://www.91linux.org;
  28.     proxy_set_header Host $host;
  29.     proxy_set_header X-Real-IP $remote_addr;
  30.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  31.     proxy_set_header REMOTE-HOST $remote_addr;
  32.    
  33.     add_header X-Cache $upstream_cache_status;
  34.     #Set Nginx Cache
  35.     proxy_ignore_headers Set-Cookie Cache-Control expires;
  36.     add_header Cache-Control no-cache;
  37.     expires 12h;
  38. }

  39. #PROXY-END/
复制代码
针对以上代码的说明
因为宝塔里的反向代理文件默认是对静态文件全局缓存,我们采用针对性缓存的方式。
比如不希望缓存html,缓存的话容易出现typecho登陆后还是显示没有登陆的问题。那么将以上代码的html部分去掉就可以解决这个问题了。

typecho伪静态规则如下
server.png

  1.     if (!-e $request_filename) {
  2.         rewrite ^/(?!onedrive)(.*)$ /index.php?s=$2 last;
  3.     }
复制代码


热门推荐
您需要登录后才可以回帖 立即登录
说说你的想法......
0
0
0
返回顶部