Перепишите запрос от POST для ПОЛУЧЕНИЯ с nginx

У меня есть сервер бэкэнда, который, по различным причинам, только обрабатывает, ПОЛУЧАЮТ запросы. Этот сервер расположен позади прокси nginx (т.е. весь доступ сделан к nginx, который проксирует его к бэкенду с proxy_pass). Действительно ли возможно заставить nginx переписать запросы POST в, ПОЛУЧАЮТ запросы, т.е. так, чтобы POST /foo с типом контента тела application/x-www-form-urlencoded и тело foo=bar был бы проксирован к GET /foo?foo=bar?

1
задан 11 September 2015 в 00:05
1 ответ

Небольшой пример у меня работает с 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
    }
}
3
ответ дан 3 December 2019 в 18:38

Теги

Похожие вопросы