Nginx的405错误

Nginx的405错误

Nginx将静态文件响应POST请求,提示405错误问题:
绝大多数服务器,都不允许静态文件响应POST请求(GET请求静态文件是天经地义的),否则会返回HTTP/1.1 405 Method not allowed错误。然而在前端开发中,前端开发工程师经常模拟后端请求,返回静态数据来查看页面效果,怎么办?
其实很简单,知道404和50x的错误定义吧,那么就是把405重新定义一下即可,如下:

error_page  405     =200 $uri;

测试环境局部配置

    server {
        listen       8443 ssl;
        server_name  test-rebuild.baidu.com;

        ssl_certificate      ca.crt;
        ssl_certificate_key  baidu.com.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        access_log /var/log/nginx/test-rebuild.aceess.log main;
        root   /usr/share/nginx/html;
        index  index.html index.htm;

        error_page 405 =200 $uri;              #这里200写成其他数字也可以,比如:255,222等都行,自己定义的,就200好了。

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

    }

其他配置示例

示例一

https://gist.github.com/baskaran-md/e46cc25ccfac83f153bb

server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page  404     /404.html;
        error_page  403     /403.html;

        # To allow POST on static pages
        error_page  405     =200 $uri;

        # ...
}

示例二

location ~ \.(action|jsp) {
    root $testDataFold;
    error_page 405 =200 $request_uri;
}

写在最后

网上还有修改源码编译安装的办法,这里就不在展示了,但是这些都不是终极解决方案,违背了规则,最终还要:说服开发不要对静态文件使用 post 方法,对静态文件使用 POST 方法是无意义的,更改成 GET 方法请求静态文件。

转载于:https://blog.51cto.com/chinahao/2057940

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值