106 nginx 405错误解决

8 篇文章 0 订阅

背景: 安装了nginx,到了某项目登陆页,输入帐号和密码,弹出:

405 Not Allowed

1.排除php的报错问题

       项目入口文件中开启debug模式

       清空缓存,再次登陆,在Rumtime/log并没有出现这一条,由此可以排除php的错误问题


2.在/var/log/nginx/中,打开access.log:

127.0.0.1 - - [27/Oct/2015:11:41:41 +0800] "POST /p057_thinkepitome/Branches/assemble_20150805/Apps/portal/index.php/Service/Index/doLogin

HTTP/1.1" 405 575

"http://127.0.0.1/p057_thinkepitome/Branches/assemble_20150805/Apps/portal/index.php?s=/Service/Index/login"

"Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/37.0.2062.120 Chrome/37.0.2062.120 Safari/537.36"


line1: 用户IP ,访问时间, http请求方式, 访问的网页

line2: http协议  ,服务状态(服务器内部错误),传送字节数

line3:  refer:即当前页面的上一个网页

line4: agent信息


有用信息不多


3. /etc/nginx/site-available/, 打开default,将405重定向返回200:

error_page 405 =200 @405;
location @405
{
    root /opt/htdocs;
}


测试无效


4.转换post为get


##借助upsteam 将请求转发到server localhost

upstream static_backend {
    server localhost:80;
}

server {
    listen 80;

    # ...

    error_page 405 =200 @405;
    location @405 {
        root /srv/http;

        #转发方式为get

        proxy_method GET;
        proxy_pass http://static_backend;
    }
}

不再报405,而是定位到nginx初始页面 welcome to nginx .


5.看了下405错误具体内容

任何客户端  在和您的网络服务器通讯时,都需经过以下循环:

  1. 从您站点的 IP 名称 ( 即您的网页地址 - URL, 不带起始的 ‘http://') 获得一个 IP 地址。这个对应关系 ( 即由 IP 名称向 IP 地址转换的对应关系 ) 由域名服务器 (DNSs) 提供。
  2. 打开一个 IP socket ( 套接字 ) 连接到该 IP 地址。
  3. 通过该 socket 写 HTTP 数据流。
  4. 从您的网络服务器接受响应的 HTTP 数据流。该数据流包括状态编码, 其值取决于 HTTP 协议 。 解析 该数据流得到 状态编码 和其他有用信息。

该错误在以上所述的最后一步生成,即当客户端收到 HTTP 状态编码 并识别其为 ‘405’ 时。

405 错误经常和 POST 方法同时出现。 您可能在您的网站上尝试引入某种输入表格,但并非所有的互联网服务供应商 (ISPs) 都 允许处理该表格所需的 POST 方法。


判断这是提交表单无法找到应答服务器或者遇到服务器故障时,由代理服务器或者是由路由器发出的一个错误信息号。


6.再次观察发现

表单提交之前url为

http://127.0.0.1/p057_thinkepitome/Branches/assemble_20150805/Apps/portal/index.php?s=/Service/Index/login

表单提交之后url为

http://127.0.0.1/p057_thinkepitome/Branches/assemble_20150805/Apps/portal/index.php/Service/Index/doLogin


入口文件后面的?s= 丢失,猜测因此将post请求解析为请求这个静态页面,猜测是nginx url rewrite配置


7.意想不到的结局

大神徐哥将项目配置文件里面加了

'URL_MODEL' => 3,修改为兼容模式

好了.....竟然好了.....



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值