Как я могу удалить базовый URL в Nginx для приложения Mojolicious? - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь запустить Mojolicious как обратный прокси. Моя конфигурация Nginx выглядит так:

upstream printo {
    server 127.0.0.1:3000;
}

[..]

location /print {
   proxy_pass http://printo;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
}

Я бы хотел убрать часть /printo URL-адреса, прежде чем запрос достигнет приложения Mojolicious - в противном случае все запросы имеют URL-адрес /printo/something, в результате чего получается 404.

Я видел это , но я бы хотел сделать это в Nginx, если это возможно.

Я пытался переписать так:

rewrite ^/print/(.+)$ $1;

безрезультатно.

Как это сделать?

1 Ответ

0 голосов
/ 26 июня 2018

Чтобы изменить URI при его передаче в восходящем направлении, вы можете использовать rewrite...break или выполнить аналогичную функцию, используя саму директиву proxy_pass.

Например:

location /print {
    rewrite ^/print(/.*)$ $1 break;
    proxy_pass http://printo;
    ...
}

Не забудьте сохранить ведущий / в переписанном URI. См. этот документ для деталей. Или:

location /print/ {
    proxy_pass http://printo/;
    ...
}

Значение location должно иметь завершающий /, чтобы обеспечить правильную замену текста. Подробнее см. в этом документе .

...