Назад | Перейти на главную страницу

Конечная косая черта обратного прокси-сервера 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-страницу.

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

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;
}

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