Как мне разрешить nginx регулярное выражение ТОЛЬКО в подразделе URL? - PullRequest
0 голосов
/ 15 марта 2020

У меня есть несколько URL-адресов, id - это переменная.

Все до /purchases/id должно быть proxy_pass, и все после этого раздела URL не должно быть proxy_pass и продолжаться как обычно. Ниже показано, как это должно работать:

/purchases                  - allow proxy_pass
/purchases/id               - allow proxy_pass
/purchases/id/terms         - continue as normal
/purchases/id/terms/accept  - continue as normal
/purchases/id/terms/cancel  - continue as normal
/purchases/id/terms/return  - continue as normal

Вот конфигурация nginx. В настоящее время все URL-адреса передаются в proxy_pass.

    location ~ ^/purchases {
      proxy_pass     https://myurl.com;
    }
    location ~ ^/purchases/(\d+)$ {
      proxy_pass     https://myurl.com;
    }

Есть ли что-то очевидное, что упускается? Любая помощь будет оценена. Спасибо.

1 Ответ

0 голосов
/ 16 марта 2020

Для кого-либо еще с этой проблемой. Проблема была не в регулярных выражениях или правилах. Это был порядок правил.

Первое правило ловило все, а затем nginx не нужно было применять второе правило.

Ниже исправлена ​​проблема:

    location ~ ^/purchases/(\d+)$ {
      proxy_pass     https://myurl.com;
    }
    location ~ ^/purchases {
      proxy_pass     https://myurl.com;
    }
...