只想知道 发表于 2015-1-14 20:31:42

来一发Nginx的405毛病办理

如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!会见办事使器URL用IE扫瞄器能够下载,可是用客户端测试就没举措,提醒收集毛病,在客户端何处,失掉的了局就是405毛病,这个是nginx前往的。因而,在我的电脑上拿扫瞄器,输出制订的url,那客户端摹拟器都能够翻开,因而检察了日记,发明了个中的分歧。扫瞄器是用发送的GET哀求,而客户端是发送的POST哀求。

日记以下:

***.***.***.***-C“POST/******x.***xHTTP/1.1″“405″173“-”“curl/7.12.1(i686-redhat-linux-gnu)libcurl/7.12.1OpenSSL/0.9.7azlib/1.2.1.2libidn/0.5.6″“-”

个中后面的***是哀求源的ip,前面的POST那的是会见的文件。

因而上彀搜刮,相似的成绩,发明了个中的缘故原由,上面是张宴先生的博客里对这个成绩的处置***,上面有

URL:http://blog.s135.com/read.php?337

关于这类情形的注释是,因为会见静态文件的时分只能利用GET体例,不克不及利用POST,因而呢,在nginx的前往信息中,在0.6.33版今后就增添了这么一个405毛病形态码,意义就是,你不克不及用POST体例来哀求静态文件,错了,要换一般的***。

详细的changelog是在nginx的官方站点上看到的,内容以下:

URL:http://www.nginx.net/CHANGES-0.6

Changeswithnginx0.6.3320Nov2008

*)Feature:nownginxreturnsthe405statuscodeforPOSTmethod
requestingastaticfileonlyifthefileexists.

可是我们但愿POST体例能够被撑持,因而张先生的设置内里,就重定向了405前往为200,就是假如碰到405,就当做200处置。

详细设置,关头局部以下:

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

重定向了405->200了,而且给405这个毛病指定了doc_root,就是一般的doc_root的设置。

因而,依照下面的设置今后,发明并没有失效,仍是前往405,事先就钻牛角尖了,以为是nginx的成绩,因而换了低版本的0.6.35的版本,仍是不可,随机上彀搜到两种***。

1,用post_to_static这个patch,可是苦于我其实不晓得怎样打这个patch,最初我溃散了。。不然的话,从头编译一个nginx就撑持post_to_static这个设置项,就能够选择on/off来开关,完成同意POST哀求会见静态页面。

能够参考的url以下:

http://www.ruby-forum.com/topic/142663有个附件是c写的patch

http://bbs3.chinaunix.net/viewthread.php?tid=1351579这个写的和张先生一样,可是帮我注释了为何后面要有rewrite的成绩。

2,第二种,用proxy_pass来利用代办署理会见,可是我重定向到了127.0.0.1:port/今后,也没好使,还呈现了502的毛病。

url以下:http://millarian.com/2008/9/5/nginx-405-not-allowed-error看上往不错,可是也没用,要设置proxy_pass必需在localtion内里,貌似。

3,第三种是一个很好的思索偏向,可是没有能起感化,也许必要持续修正一下。

#location~(.***1$|.***2$){
#root/home/***xx/htdocs;
#indexindex.htmlindex.htm;

#if($request_method!=GET){
#set$request_methodGET;
#}
#fastcgi_paramREQUEST_METHODGET;
#}

这里就是想,假如会见和我们划定规矩婚配的文件时分,假如会见的哀求不是GET,那末我们就给$requset_method的变量赋值为GET,可是这里没有效到fcgi大概上面拿句就不克不及失效,而且假如同时呈现两个$requset_method的话,设置文件检测的时分,会提醒语法毛病,变量反复,这里我以为这里假如url哀求过去了,这里的这个变量大概就没法改动了,再从头赋值也不克不及了,可是rul为何能改写呢,这个是一个疑问。

以上的***都没有办理成绩,最初让瀚哥给乱实验出来了,,这里小看一下他。。没次都能如许乱实验出来,看来我们偶然候得不要被礼貌限定,大概是被现有手头的乐成案例束厄局促。

详细设置以下:

location^~/***x.***1{
root/home/******/htdocs;
error_page405=200/***x.***1;
}

location^~/***x.***2{
root/home/******2/htdocs;
error_page405=200/***x.***2;
}

为何error_page在外部失效而不是在server谁人局部失效,,就不得而知了。

并且这里的设置不具有天真性,不外也的确是由于有两个文件,独自设置,间接指定了往那里下载,连重定向今后的root都间接成了文件。

================
自己的乐成设置案比方下:location/
{
root/www/client/domain;
indexindex.shtmlindex.html;
error_page405=200/index.shtml;
}

location~*/*.shtml$
{
root/www/client/$domain;
indexindex.shtmlindex.html;
error_page405=200http://$domain$request_uri;
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!

爱飞 发表于 2015-1-15 10:08:30

来一发Nginx的405毛病办理

确实不错,顶先

变相怪杰 发表于 2015-1-17 20:32:56

通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。

只想知道 发表于 2015-1-26 22:48:43

我学习Linux的心得体会 ,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。

愤怒的大鸟 发表于 2015-2-11 08:00:46

为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。?

蒙在股里 发表于 2015-3-2 01:07:16

甚至目前许多应用软件都是基于它的。可是没有哪一个系统是十分完美的。

小妖女 发表于 2015-3-11 04:08:57

Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。

老尸 发表于 2015-3-17 22:09:35

老实说,第一个程序是在C中编译好的,调试好了才在Linux下运行,感觉用vi比较麻烦,因为有错了不能调试,只是提示错误。

兰色精灵 发表于 2015-3-25 08:31:10

通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。
页: [1]
查看完整版本: 来一发Nginx的405毛病办理