静态文件接收数据405错误nginx解决方法
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程序即可.