Конечная косая черта обратного прокси Nginx

На этот вопрос уже ответили несколько раз, но в моем случае есть поворот.

У меня есть приложение узла, работающее на порту 3000. Я использую nginx для обратного прокси. Теперь приложение работает, только если в конце стоит косая черта.

Итак, это работает: https://example.com/main/site/react/

Это не работает: https: //example.com/main/site/react

Вот конфигурация, которую я использую:

location /main/site/react {
    error_log /var/log/nginx/app.error.log;
    rewrite ^/main/site/react/(?:|[\w\/]+)(\/static.*)$ $1 break;
    rewrite ^/main/site/react/?(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:3000/;
}

После проверки других связанных вопросов, добавление следующего правила перезаписи (после error_log ) сработало для меня:

rewrite ^(.*[^/])$ $1/ permanent;

Вышеупомянутое правило обработало мое приложение узла, но оно не удалось с моими статическими ресурсами. У меня есть перезаписанные статические ресурсы, которые не работают.

Итак, этот URL не работает: https://example.com/main/site/react/static/js/bundle.js . Он всегда отображает индексную HTML-страницу.

0
задан 22 May 2017 в 07:53
1 ответ

Ваша конфигурация выглядит хорошо. Просто добавьте перезапись в конце:

location /main/site/react {
    rewrite ^/main/site/react$ https://$host/main/site/react/ permanent;
    rewrite ^/main/site/react/(?:|[\w\/]+)(\/static.*)$ $1 break;
    rewrite ^/main/site/react/?(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:3000;
}

Также изменили регулярное выражение, которое будет обрабатывать косую черту перед параметрами запроса.

1
ответ дан 4 December 2019 в 16:15

Теги

Похожие вопросы