Рейтинг:2

nginx разные маршруты для / и /*

флаг us

я бы хотел проложить маршрут / к носок и /(.*) к б.носок.

Я пытался

    место расположения / {
        proxy_pass http://unix:/tmp/a.sock;
        proxy_read_timeout 30;
        proxy_connect_timeout 30;
        прокси_перенаправление выключено;
        proxy_set_header Хост $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $ схема;
    }
    расположение ~ /(.*) {
        proxy_pass http://unix:/tmp/b.sock;
        proxy_read_timeout 30;
        proxy_connect_timeout 30;
        прокси_перенаправление выключено;
        proxy_set_header Хост $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $ схема;
    }

тоже с разным порядком.

Можно ли это сделать с помощью nginx, если да, то как?

Я считаю, что согласно документации все, что заканчивается на / принимает подстановочный знак после / и простой маршрут без регулярного выражения имеет приоритет.

По сути, бэкэнд на б.носок имеет определение маршрута /:срок или же /{срок} в зависимости от того, какую библиотеку маршрутизации вы используете, но не имеет обработчика для /. Вы, вероятно, думаете: «Так добавь обработчик для / и закругляйтесь на этом". Я мог бы сделать это, но это обходной путь. Я хотел бы носок обрабатывать /.

Итак, еще раз, можно ли это сделать с помощью nginx и как?

Richard Smith avatar
флаг jp
Ваше регулярное выражение `/(.*)` также соответствует `/`.
Gerard H. Pille avatar
флаг in
Вы пытались заменить «местоположение /» на «местоположение ~ ^/$»?
Рейтинг:4
флаг cn

Используйте точное соответствие для домашней страницы, например. местоположение = / { ¦ }. местоположение / { ¦ } будет применяться для остальных страниц.

Точное соответствие (со знаком равенства) имеет приоритет над местоположением префикса (без знака равенства).

Paul avatar
флаг cn
IIRC, порядок `=`, где `nginx` немедленно прекращает обработку, затем регулярное выражение, наконец, совпадение. Я думаю, что исходная конфигурация в вопросе всегда совпадает с регулярным выражением.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.