Обратная косая черта 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;
}

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

Другие вопросы по тегам