Обратная косая черта 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.
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;
}
Также были изменены регулярные выражения, которые будут обрабатывать слэш перед параметрами запроса.