You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Nginx中开启PUT和DELETE方法?配置后不生效如何解决?

问题根源

你当前场景是Nginx做反向代理,将请求转发到端口3000的后端服务处理,ngx_http_dav_module是Nginx用于自身处理WebDAV请求、直接操作服务器本地文件的模块,你在配置中添加dav_methods PUT DELETE;后,Nginx会直接拦截PUT、DELETE请求自行处理,不会转发到后端服务,这就是配置不生效的核心原因。

解决方案

  1. 移除多余配置
    删除location /块中的dav_methods PUT DELETE;行,反向代理场景下不需要开启WebDAV相关配置。

  2. 补充跨域(CORS)配置
    本地无跨域问题,部署到线上后跨域策略会导致浏览器拦截PUT、DELETE非简单请求,需要在Nginx配置中补充跨域头、处理OPTIONS预检请求,修改后的location块配置如下:

location  / {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;

    # 跨域配置
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';
    add_header Access-Control-Allow-Headers '*';
    # 处理OPTIONS预检请求直接返回204
    if ($request_method = OPTIONS) {
        return 204;
    }
}

如果你的站点需要严格限制跨域来源,把*替换成你允许的域名即可。

  1. 生效配置
    修改完成后执行以下命令验证配置语法正确、重载Nginx配置生效:
nginx -t
systemctl reload nginx

排查建议

如果修改后仍有问题,可以查看Nginx日志确认请求状态:

  • 访问日志路径:/var/log/nginx/access.log
  • 错误日志路径:/var/log/nginx/error.log

内容的提问来源于stack exchange,提问作者Anurudh Mhatre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:36:02