Как можно изменить параметр $ request_method в nginx для директивы proxy_pass? - PullRequest
0 голосов
/ 09 октября 2018

Мне нужно при определенных условиях изменить переменную nginx $request_method, когда я передаю запрос через директиву proxy_pass.

Я думал об использовании чего-то вроде директивы map:

        map $request_method $request_method {
            default $request_method;
            DELETE POST;
            PUT POST;
        }

Но есть 2 проблемы:

  1. директивы карты разрешены только в блоке http верхнего уровня и не могут быть изменены внутри директивы location.
  2. это также дает мне дубликат переменной "request_method" ошибка от nginx.

Как я могу изменить $request_method для proxy_pass?

1 Ответ

0 голосов
/ 09 октября 2018

Существует директива proxy_method.

Вам понадобится другая переменная, объявленная через map (да, на уровне server):

map $request_method $my_proxy_method {
  default $request_method;
  DELETE POST;
  PUT POST;
}

А потом в вашем location:

proxy_method $my_proxy_method;

Обратите внимание, что переменные Nginx оцениваются лениво, поэтому, если у вас много других местоположений, my_proxy_method будет оцениваться только для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...