Nginx, слеш в конце запроса и POST-запросы?

Добрый день, Хабралюди!


Возник вопрос, связанный с конфигурацией nginx:


Сейчас конфиг вылядит так:

server {
    listen 80;
    server_name erk.dev;
    
    location / {
        root /opt/web/nginx/sites/erk.dev/code;
        access_log /opt/web/nginx/sites/erk.dev/logs/access.log;
        error_log /opt/web/nginx/sites/erk.dev/logs/error.log;
    }

    location /app {
       proxy_pass http://127.0.0.1:9090/kyber;
       access_log /opt/web/nginx/logs/upstreams/erk.access.log upstreamlog;
       error_log /opt/web/nginx/logs/upstreams/erk.error.log;
    }
}



Если сделать запрос POST на erk.dev/app/, то работает нормально.

Однако есть запрос слать на http//:erk.dev/app, то POST-запрос приходит на Nginx, он отвечает 302

и следующий запрос идет уже на erk.dev/app/, но это GET-запрос.


Как правильно сконфигурировать Nginx, чтобы вне завимости от того есть ли слеш в конце или нет, nginx отправлял POST-запрос на upstream?
  • Вопрос задан
  • 7000 просмотров
Решения вопроса 1
Maximus43
@Maximus43
Скорее всего (99%) редирект приходит от бэкенда.
Попробуйте так
location /app {
 if ($request_method !~ ^(POST)$ ) {
         return 444;
     }
                proxy_pass      proxy_pass http://127.0.0.1:9090/kyber/app/$is_args$args;
                access_log /opt/web/nginx/logs/upstreams/erk.access.log upstreamlog;
       error_log /opt/web/nginx/logs/upstreams/erk.error.log;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Anonym
@Anonym
Программирую немного )
Есть подозрение, что редирект делает не Nginx.
Ответ написан
Комментировать
kyberorg
@kyberorg Автор вопроса
Судя по ответу и хедерам все-таки Nginx

Это может быть эта ситуация:
en.wikipedia.org/wiki/Post/Redirect/Get?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы