Скорость перезаписи Nginx для одной локации с несколькими правилами - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь настроить перезапись так, чтобы запрошенные URL-адреса вели себя следующим образом

/ бюллетень / 2019/05
переписано
/newsletter.php?year=2019&month=05

и

/ бюллетень / 2019/05 / да
переписано
/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. добавить / удалить «последний» в конце одного или обоих правил
4. сделать 2 набора {}, но в результате nginx не смог перезагрузить

Я также пытался добавить 'break' в конец правил, но это заставило мой браузер загрузить страницу вместо ее отображения.

Есть идеи, как это ускорить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...