nginx 405 not allowed问题三种解决方法

 更新时间:2023年08月28日 08:44:04   作者:hzxOnlineOk  
这篇文章主要给大家介绍了关于nginx 405 not allowed问题三种解决方法的相关资料,当您遇到"405 Not Allowed"错误时,通常表示服务器不允许您使用所请求的HTTP方法,以下是一些可能的解决方法,需要的朋友可以参考下

一、问题描述

首先看到的页面是nginx返回的页面,得知错误要从nginx上来解决

<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx/1.0.11</center>
</body>
</html>

二、问题原因

因为这里请求的静态文件采用的是post方法,nginx是不允许post访问静态资源。题话外,试着post访问了下www.baidu.com发现页面也是报错,可以试着用get方式访问

三、解决办法(三种)

(1)将405错误指向成功(我采用的这种方法解决的问题)

静态server下的location加入 error_page 405 =200 $uri;

location / {
        root /usr/share/nginx/html/cashier;
        try_files $uri $uri/ /index.html;
        index index.html index.htm;
        error_page 405 =200  $request_uri; // $request_uri这个参数的含义下面有解释
}

(2)修改nginx下src/http/modules/ngx_http_static_module.c文件

if (r->method & NGX_HTTP_POST) {
     return NGX_HTTP_NOT_ALLOWED;
}

以上这一段注释掉,重新编译,将make install编译生成的nginx文件复制到sbin下 重启nginx

(3)修改错误界面指向

upstream static_backend {
    server localhost:80;
}
server {
    listen 80;
    # ...
    error_page 405 =200 @405;  // 注意 405后面是要接空格的,而不是因为打错了字符
    location @405 {
        root /srv/http;
        proxy_method GET;
        proxy_pass http://static_backend;
    }
}

(4)详细描述

405 Method Not Allowed是一个HTTP 响应状态代码,表示服务器接收并识别了指定的请求HTTP 方法,但服务器拒绝了请求资源的特定方法。此代码响应确认请求的资源有效且存在,但客户端在请求期间使用了不可接受的 HTTP 方法。

四、Nginx $request_uri和$uri详解

$uri

nginx中的$uri记录的是执行一系列内部重定向操作后最终传递到后端服务器的URL

包含请求的文件名和路径,不包含“?”或“#”等参数。

完整URL链接:http://www.alipay.com/alipay/index.html
$uri:/alipay/index.html

$request_uri

$request_uri记录的是当前请求的原始URL(包含参数),如果没有执行内部重定向操作,request_uri去掉参数后的值和uri的值是一样的。在线上环境中排查问题是,如果在后端服务器中看到的请求和Nginx中存放的request_uri无法匹配,可以考虑去uri里边进行查找。

包含请求的文件名和路径及所有参数

完整URL链接:http://www.alipay.com/alipay/index.html
$request_uri:/alipay/index.html#参数

总结 

到此这篇关于nginx 405 not allowed问题三种解决方法的文章就介绍到这了,更多相关nginx 405 not allowed问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 升级nginx以支持http2的方法

    升级nginx以支持http2的方法

    本篇文章主要介绍了升级nginx以支持http2的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Nginx四层负载均衡的配置指南

    Nginx四层负载均衡的配置指南

    当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃.为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力,这篇文章主要给大家介绍了关于Nginx四层负载均衡配置的相关资料,需要的朋友可以参考下
    2021-06-06
  • nginx如何实现同个ip、端口访问不同的项目(以路径区分项目)

    nginx如何实现同个ip、端口访问不同的项目(以路径区分项目)

    这篇文章主要介绍了nginx如何实现同个ip、端口访问不同的项目(以路径区分项目),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Nginx+Tomcat多站点部署的方法

    Nginx+Tomcat多站点部署的方法

    本篇文章主要介绍了Nginx+Tomcat多站点部署的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • nginx调用php-fpm出错解决方法和nginx配置详解

    nginx调用php-fpm出错解决方法和nginx配置详解

    这篇文章介绍了nginx调用php-fpm出错的解决方法,最后给出了nginx配置方法,需要的朋友可以参考下
    2014-03-03
  • 使用Docker主机启动Nginx服务器的完整步骤详解

    使用Docker主机启动Nginx服务器的完整步骤详解

    Docker是一个开源的容器化平台,用于轻松地打包、部署和运行应用程序,而Nginx是一个高性能的开源反向代理服务器,也是一个流行的Web服务器,这篇文章主要给大家介绍了关于使用Docker主机启动Nginx服务器的完整步骤,需要的朋友可以参考下
    2024-07-07
  • Nginx反向代理后无法获取客户端真实IP地址

    Nginx反向代理后无法获取客户端真实IP地址

    本文主要介绍了Nginx反向代理后无法获取客户端真实IP地址,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Nginx开源可视化配置工具NginxConfig使用教程

    Nginx开源可视化配置工具NginxConfig使用教程

    这篇文章主要为大家介绍了Nginx开源可视化配置工具NginxConfig使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • keepalived+nginx实现网站高可用性

    keepalived+nginx实现网站高可用性

    本文主要介绍了keepalived+nginx实现网站高可用性,包含配置Keepalived实现双主热备集群架构,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • Nginx重定向的配置实例

    Nginx重定向的配置实例

    基于Nginx的服务器需要设置下重定向,下面的b2c就是相对应的目录,需要的朋友可以参考下。
    2010-07-07

最新评论