以下为例
http {
...
server {
...
location /api {
# 检查请求方法是否为 PUT 或 DELETE
if ($request_method = PUT) {
# 将请求方法设置为 POST
rewrite ^(.*)$ $uri?_method=PUT break;
}
if ($request_method = DELETE) {
# 将请求方法设置为 POST
rewrite ^(.*)$ $uri?_method=DELETE break;
}
# 将请求代理到后端服务器
proxy_pass http://your_backend_server;
}
}
}
使用 if 指令检查请求方法是否为 PUT 或 DELETE。如果是,我们使用 rewrite 指令将请求重写为相同的 URI,但不改变请求方法。然后,我们使用 proxy_pass 指令将请求转发到后端服务器,并设置一些代理相关的 HTTP 头。
location /api {
if ($request_method = PUT) {
rewrite ^(.*)$ $uri last;
}
if ($request_method = DELETE) {
rewrite ^(.*)$ $uri last;
}
proxy_pass http://your_backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
或者
server {
...
set $method $request_method;
if ($http_X_HTTP_Method_Override ~* 'PUT|DELETE') {
set $method $http_X_HTTP_Method_Override;
}
proxy_method $method;
...
}