使用多个规则的一个位置的Nginx重写速度

时间:2019-05-08 16:45:19

标签: nginx url-rewriting

我正在尝试设置重写,以便请求的URL行为如下所示

/ newsletter / 2019/05

的改写 /newsletter.php?year=2019&month=05

/ newsletter / 2019/05 / yes

的改写 /newsletter.php?year=2019&month=05&app=yes

对于apache,它按预期工作:

RewriteRule ^newsletter/([^/]+)/([^/]+)$ newsletter.php?year=$1&month=$2 [L]
RewriteRule ^newsletter/([^/]+)/([^/]+)/([^/]+)$ newsletter.php?year=$1&month=$2&app=$3 [L]

在nginx中,我正在服务器{}中使用以下内容:

    location /newsletter/ {

        rewrite "^/newsletter/([^/]+)/([^/]+)$"
        /newsletter.php?year=$1&month=$2?;

        rewrite "^/newsletter/([^/]+)/([^/]+)/([^/]+)$"
        /newsletter.php?year=$1&month=$2&app=$3?;

    }

两者均可,但是带有“ app”变量的变体会立即加载,而较短的变体始终需要大约5秒钟来加载。

我尝试了以下方法,以使较短的变体加载更快而无济于事:
1.更改重写顺序
2.添加/删除?从最后开始选择其中一个或两个规则
3.从一个或两个规则的末尾添加/删除“ last”
4.设置2个位置{},但这导致nginx无法重新加载

我还尝试在规则的末尾添加“ break”,但这使我的浏览器下载了该页面而不是显示该页面。

有什么想法可以加快速度吗?

0 个答案:

没有答案