当前位置: > Linux服务器 > nginx >

静态文件接收数据405错误nginx解决方法

时间:2016-01-07 00:41来源:linux.it.net.cn 作者:IT
如何处理nginx在静态文件接收数据405错误问题

1.
server {

    listen       80;

    server_name  www.wiki.com;

    root  /Data/code/wiki/;

    index index.php index.html index.htm;

        location ~* ^.+\.(jpg|jpeg|png|ico|gif|css|js)$ {

                access_log   off;

                expires      30d;

        }


    location ~ (.*\.json)

    {

        root  /Data/code/wiki/;

      error_page 405 =200 $1;

    }


    location ~ \.php {

        fastcgi_pass   127.0.0.1:9000;

        fastcgi_index  index.php;

        include        fastcgi_params;

        fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;

        fastcgi_param  PATH_INFO        $fastcgi_path_info;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

    }

}



其实这个里边最重要的一个就是


location ~ (.*\.json)

{

  root  /Data/code/wiki/;

  error_page 405 =200 $1;

}



这个的意思是将405错误重新指向200,也就是把405当作200来处理,并给405这个错误指定了root目录,这个目录其实就是和网站本来的目录一样就可以,当然不同的写法location和error_page 405 =200 $1也是要相应改变的哦~~  这里就不做深入研究了~

ps:

这里的json的绝对路径是/Data/code/wiki/language,例如:/Data/code/wiki/language/languages.json

对于location这里的正则我就不说了,因为我也不是很懂,只是误打误撞能够使用了,哈哈,望大牛多多指点~



这样我们的wiki就能够正常的访问到我们的json文件格式的文件了,而且还可一接收数据~

第一个方法是我实践过的是可以使用的.




2.


网上还有一种方法说是可以解决的,但是我没试,有情趣的童鞋可以试试

修改源码,重新编译nginx,并覆盖原来的nginx的sbin目录

vim src/http/modules/ngx_http_static_module.c

找到下边内容把他注释掉

/*

if (r->method & NGX_HTTP_POST) 



    return NGX_HTTP_NOT_ALLOWED; 

}

*/

然后按照原来的编译参数重新编译一边.

PS:只要make就可以了,不需要make install,然后把objs下的nginx文件复制到你原来的nginx安装目录的sbin下,替换原来的nginx程序即可.



(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容