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

Nginx配置中PUT请求出现405 Method Not Allowed错误的排查与解决

问题原因及解决方案

核心原因

你的Nginx配置中,全局的if (!-e $request_filename)规则与location /内的try_files逻辑存在冲突,同时PUT请求被Nginx静态文件处理模块拦截——当请求目标不是真实存在的文件时,Nginx默认会拒绝PUT方法访问静态资源路径,直接返回405,并未将请求正确转发到PHP后端处理。

另外,add_header指令仅在响应码为2xx或3xx时生效,但这不是触发405的直接原因,属于配置细节问题。

修复步骤

修改Nginx server配置,调整请求转发逻辑,确保PUT请求能被正确传递到PHP:

server {
    listen 443 ssl default_server;
    root /opt/bitnami/nginx/html/web;
    server_name servername.com;

    ssl_certificate      /opt/bitnami/nginx/conf/servername.com.crt;
    ssl_certificate_key  /opt/bitnami/nginx/conf/servername.com.key;

    location / {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT';
        add_header 'Access-Control-Allow-Headers' 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type, cache-control, expires, pragma';
        add_header 'Access-Control-Max-Age' 86400;

        if ($request_method = OPTIONS) {
            return 204;
        }

        # 移除全局if规则,统一在此处理请求转发
        try_files $uri $uri/ @php_handler;
    }

    # 专门处理需转发到PHP的请求,覆盖PUT等所有方法
    location @php_handler {
        rewrite ^/(.+)$ /index.php?q=$1 last;
    }

    # 确保PHP接收并处理所有请求方法
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/opt/bitnami/php/var/run/www.sock; # 若为TCP端口则改为127.0.0.1:9000,可查看bitnami/php.conf确认路径
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param REQUEST_METHOD $request_method; # 显式传递请求方法给PHP
    }

    include "/opt/bitnami/nginx/conf/bitnami/*.conf";
}

额外检查点

  • 确认Bitnami PHP-FPM路径正确:可查看/opt/bitnami/nginx/conf/bitnami/php.conf内的配置,匹配实际的sock或端口地址。
  • 重启Nginx后重新测试PUT请求:
    curl --location --request PUT 'https://servername.com/wp/?rest_route=%2Fsimple-jwt-login%2Fv1%2Fuser%2Freset_password&email=mail@mail.com&code=securecode&new_password=123456'
    
  • 验证Simple JWT Login插件是否支持PUT方法:部分REST接口可能仅接受POST,可尝试改用POST请求携带参数测试,确认后端逻辑正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:38:19