У меня есть сервер бэкэнда, который, по различным причинам, только обрабатывает, ПОЛУЧАЮТ запросы. Этот сервер расположен позади прокси nginx (т.е. весь доступ сделан к nginx, который проксирует его к бэкенду с proxy_pass
). Действительно ли возможно заставить nginx переписать запросы POST в, ПОЛУЧАЮТ запросы, т.е. так, чтобы POST /foo
с типом контента тела application/x-www-form-urlencoded
и тело foo=bar
был бы проксирован к GET /foo?foo=bar
?
Небольшой пример у меня работает с nginx 1.10.x на ubuntu 16.04 с nginx-extras (содержит lua). Он не учитывает аргументы запроса из запроса, чтобы объединить их с телом сообщения.
server {
...
server_name ...;
client_max_body_size 4k; # prevent too long post bodies
location / {
if ($request_method = POST ) {
access_by_lua '
ngx.req.read_body()
local data = ngx.req.get_body_data()
ngx.req.set_uri_args(data)
';
}
proxy_pass http://yourupstreamdestination;
proxy_method GET; # change method
include /etc/nginx/proxy_params.inc; # include some params
}
}