На этот вопрос уже неоднократно ответили, но в моем случае есть поворот.
У меня есть приложение узла, которое работает на порту 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-страницу.
Ваша конфигурация выглядит хорошо. Просто добавьте перезапись в конце:
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;
}
Также изменили регулярное выражение, которое будет обрабатывать косую черту перед параметрами запроса.