Nginx
使用 nginx 將請求從 POST 重寫為 GET
我有一個後端伺服器,由於各種原因,它只處理 GET 請求。該伺服器位於 nginx 代理後面(即所有訪問都對 nginx 完成,它使用 代理它到後端
proxy_pass
)。是否可以讓 Nginx 將 POST 請求重寫為 GET 請求,即POST /foo
使用正文內容類型application/x-www-form-urlencoded
和正文foo=bar
將被代理到GET /foo?foo=bar
?
這個小例子適用於我在 ubuntu 16.04 的 nginx 1.10.x 和 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 } }