Nginx+CI框架出现404错误怎么解决
最近刚学ci框架,做了个简单的项目,在本地搭服务器的环境都调通了,但是部署到远程服务器时:
http://example.com/(index.php)/ 可以访问(为配置的默认controller-class)
http://example.com/(index.php)/[controller-class]/[controller-method] 不可以访问(提示404错误!)
最后百度原因:
对于/index.php/abc这种url,Apache和Lighttpd会按”index.php?abc”来解释,而nginx会认为是请求名字是“index.php”的目录下的abc文件的内容。所以CI在nginx下不配置rewrite是无法运行的,而在Apache和Lighttpd则正常。
解决方案(要点加粗,重点标红):
server {
listen ;
server_name example.com;
root /data/wwwroot/example/ index index.php index.html index.htm;
location ~* \.(css|js|swf|htm|jpg|png|gif|json|atlas)?$ {
expires d;
add_header Pragma public;
add_header Cache-Control "public";
}
location /controller-class/ {
if (!-e $request_filename) {
rewrite ^/controller-class/(.*)$ /controller-class/index.php?q=$uri&$args;
}
}
location ~ \.php$ {
fastcgi_pass ...:;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE open_basedir=$document_root:/tmp/:/proc/;
include fastcgi_params;
}
}
以上内容是小编给大家分享的Nginx+CI出现404错误怎么解决的相关内容,希望对大家有所帮助!
相关推荐
-
HTTP 499 状态码 nginx下 499错误的解决办法
日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产品很长时间没有修改,所以前端程序的问题基本上可以排除,于是就想着是Get方式调用的接口不稳定,问了相关人员,说没有问题,为了拿到确切证据,于是我问相关人员要了nginx服务器的日志文件(awstats日志),分析后发现日志中很多错误码为499的错误,约占整个日志文件的1%,而它只占全部报错的70%左
-
Linux服务器nginx访问日志里出现大量http 400错误的请求分析
服务器中的错误记录类似于这种: 124.65.133.242 – – [27/Oct/2014:14:30:51 +0800] "-" 400 0 "-" "-" 124.65.133.242 – – [27/Oct/2014:14:31:45 +0800] "-" 400 0 "-" "-" 124.65.133.242 – – [27/Oct/2014:14:31:45 +0800]
-
Nginx服务器中配置404错误页面时一些值得注意的地方
换了VPS之后的某一天,在Google管理员工具控制台下看到了大量的"软404"错误,查找了一些资料之后发现是自己在Nginx下配置404页面的方法不对才导致了错误的产生,在此记录一下Nginx下正确的404页面配置方法. 404是一个相应代码,表示"页面无法找到"(Page Not Found),Google关于"软404"给出的说法是: 复制代码 代码如下: Instead of returning a 404 response code f
-
nginx服务器access日志中大量400 bad request错误的解决方法
在access.log中有大量400错误,并以每天几百M的速度增加,占用大量空间. 复制代码 代码如下: tail -f /opt/nginx/logs/access.log 116.236.228.180 - - [15/Dec/2010:11:00:15 +0800] "-" 400 0 "-" "-" 116.236.228.180 - - [15/Dec/2010:11:00:15 +0800] "-" 400
-
Nginx启动常见错误及解决方法
重新启动服务器,访问web服务发现无法浏览啦!登陆服务器之后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)错误,进到logs文件发现的确没有nginx.pid文件 [root@localhost sbin]# ./nginx -s reload nginx: [error]
-
Nginx服务器中414错误和504错误的配置解决方法
414 Request-URI Too Large #客户端请求头缓冲区大小,如果请求头总长度大于小于128k,则使用此缓冲区, #请求头总长度大于128k时使用large_client_header_buffers设置的缓存区 client_header_buffer_size 128k; #large_client_header_buffers 指令参数4为个数,128k为大小,默认是8k.申请4个128k. large_client_header_buffers 4 128k; 当http
-
Nginx PHP-Fcgi中因PHP执行时间导致504 Gateway Timeout错误解决记录
昨天,一个程序需要导出500条数据,结果发现到150条是,Nginx报出504 Gateway Timeout错误 经观察,发现大约30秒时超时,php.ini中执行时间配置已经是300秒: 复制代码 代码如下: max_execution_time = 300 再查nginx的相关配置,无果. 写了一个php的测试页再测: 复制代码 代码如下: echo 'aaa'; set_time_limit(0); sleep(40); echo 'aa'; 依然超时,可以确定set_time_limi
-
Nginx 502 Bad Gateway错误常见的4种原因和解决方法
1.FastCGI worker进程数是否不够 通过命令查看服务器上一共开了多少的 php-cgi 进程 复制代码 代码如下: ps -fe |grep "php" | grep -v "grep" | wc -l 使用如下命令查看已经有多少个php-cgi进程用来处理tcp请求 复制代码 代码如下: netstat -anop | grep "php" | grep -v "grep" | wc -l 接近配置文件中设置的数
-
修改配置解决Nginx服务器中常见的上传与连接错误
nginx上传错误413 Request Entity Too Large 默认情况下使用nginx反向代理上传超过2MB的文件,会报错413 Request Entity Too Large,解决这个方法很简单,修改配置client_max_body_size值即可 修改nginx.conf #cat /usr/local/nginx-1.7.0/conf/nginx.conf | grep client_max_body_size client_max_body_size 10M; 如果需要
-
Nginx 499错误问题及解决办法
Nginx简介 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日.其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名.2011年6月1日,nginx 1.0.4发布. Nginx是一款轻量级的Web 服务器/反向代理服务器及电
-
权限问题导致Nginx 403 Forbidden错误的解决方法
今天在一个新的环境上安装nginx,结果访问的都是403 通常显示403我立马都会想到路径配置不对,但我仔细看了一下,目录路径没问题: nginx.conf: 复制代码 代码如下: server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; locat
-
Nginx反向代理proxy_cache_path directive is not allowed错误解决方法
尝试使用Nginx进行反向代理过程中出现如下错误: 复制代码 代码如下: nginx: [emerg] "proxy_cache_path" directive is not allowed here in /etc/nginx/conf.d/default.conf:29 提示意思"proxy_cache_path指令不被允许",在官网上查找了相关说明,也没有发现问题,最后看应用范围才知道,他只能使用于http{ }部分,把proxy_cache_path放置于
随机推荐
- input、button的不同type值在ajax提交表单时导致的陷阱
- 解析jdbc处理oracle的clob字段的详解
- jQuery插件开发的五种形态小结
- jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
- vue.js异步上传文件前后端实现代码
- Java异常处理运行时异常(RuntimeException)详解及实例
- JavaScript面试题(指针、帽子和女朋友)
- ajax读取数据后使用jqchart显示图表的方法
- 在.Net中使用MongoDB的方法教程
- PHP数据库处理封装类实例
- python进阶教程之函数参数的多种传递方法
- 自用mysql自带命令实现数据库备份还原的方法
- Docker到底是什么?Docker为什么它这么火!
- javascript中定义类的方法详解
- sqlserver2008 拆分字符串
- 在Python中使用全局日志时需要注意的问题
- android实现获取正在运行的应用程序
- 一个ASP.NET中使用的MessageBox类
- Laravel4中的Validator验证扩展用法详解
- Python算法之图的遍历