解决nginx添加反向代理代码不生效-与原rewrite伪静态规则冲突了怎么办?

如果你的网站使用nginx环境配置,在添加了反向代理代码之后不生效。

仔细研究发现发现问题原因是rewrite伪静态规则优先级高于反向代理并且某些网站程序的伪静态规则,直接拦截了所有匹配导致。如 typecho,thinkphp,zblog,wordpress 等主流建站程序!

解决办法就是,给伪静态规则加上一个判断条件,把反向代理目录排除。

以我的 typecho 伪静态为例:

if (!-e $request_filename) {
    rewrite ^(.*)$ /index.php$1 last;
}

加入我想过滤掉bz这个文件目录,可以这样写。

注意^(.)部分,把 ^(.) 改成 ^/(?!bz)(.*) ,其中 bz改成自己的反代目录,如有多个用|分开: ^/(?!bz|app)(.)
修改后的代码就变成以下:

if (!-e $request_filename) {
    rewrite ^/(?!bz)(.*)$ /index.php$1 last;
}

或者:

if (!-e $request_filename) {
    rewrite ^(?!/bz/)(.*)$ /index.php$1 last;
}

这样就可对 /bz/ 添加反向代理啦~

给TA打赏
共{{data.count}}人
人已打赏
建站教程技术活

教你使用 typecho 火车头采集壁纸站

2021-2-12 14:53:00

技术活

nginx配置图片缓存以及清理图片缓存

2021-2-17 15:23:57

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索