Мой пример использования: у меня есть электронное письмо со ссылкой «подтвердить ваш адрес электронной почты».Когда пользователь щелкает эту ссылку, пользовательский агент выполняет запрос GET, например:
GET http://widgetwerkz.example.com/confirm_email?challenge=LSXGMRUQMEBO
Сервер будет выполнять эту операцию как POST (поскольку это побочная операция).У меня нет доступа к коду сервера вообще.Запрос назначения должен быть:
POST http://widgetwerkz.example.com/rpc/verify
{ "challenge": "LSXGMRUQMEBO" }
Какую перезапись Nginx я могу выполнить для достижения этой цели?
Редактировать : решение в контексте
http {
server {
# ...
location /confirm_email {
set $temp $arg_challenge;
proxy_method POST;
proxy_set_body '{ "challenge": "$temp" }';
proxy_pass http://127.0.0.1/rpc/verify;
set $args '';
}
}
}
Это делает все это вместе:
- Преобразует запрос из GET в POST
- Перезаписывает местоположение с
/confirm_email
на /rpc/verify
- Удаляет строку запросаиз запроса (например, полученный URL-адрес просто
/rpc/verify
, без ?challenge=LSXGMRUQMEBO
) - Добавляет тело в формате JSON:
{ "challenge": "LSXGMRUQMEBO" }
Спасибо Ивану за то, что он поставил меняправильный путь!