您的位置:首页 > 运维架构 > Nginx

106 nginx 405错误解决

2015-10-27 16:18 549 查看
背景: 安装了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错误具体内容

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

从您站点的 IP 名称 ( 即您的网页地址 - URL, 不带起始的 ‘http://') 获得一个 IP 地址。这个对应关系 ( 即由 IP 名称向 IP 地址转换的对应关系 ) 由域名服务器 (DNSs) 提供。
打开一个 IP socket ( 套接字 ) 连接到该 IP 地址。
通过该 socket 写 HTTP 数据流。
从您的网络服务器接受响应的 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,修改为兼容模式

好了.....竟然好了.....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: