配置nginx支持pathinfo模式

WebServer 2012-08-31 nginx,pathinfo

缘由

很久不使用apache了,渐渐对apache感到陌生,因为朋友有个ZendFramework框架从apache移到nginx下,需要pathinfo模式支持。

网上海搜

于是开始搜索nginx+pathinfo相关文章,一开以为很容易就会配置好。因为搜索后发现有大量文章介绍nginx开启pathinfo模式,感觉不是什么难事。但是经过几个小时下来,还是没有配置好。并且大量文章的内容都极其相似,基本都是转载的。

开始有点急了!因为一天过去了没有配好。

继续摸索

没办法,继续搜索。为了验证方便,我用a.com下载thinkphp框架搭了个环境。并且加了UserAction.class.php控制器类,在类里加了一个app方法并输出一行文字。

于是,我开始不断地改写nginx.conf文件重启nginx,不断的刷新a.com/index.php/User/app 地址。结果要么是地址损坏提示、502、Access defind.

又是一天过去了,开始感觉有点彷徨。

最后坚持

按理说我感觉应该有nginx+thinkphp的先例,只是我没有搜索到答案而已。突然间感觉网上好迷茫,一个小小的问题寻求不到解答。今晚,又试着使用nginx thinkphp关键字搜索,我一下点到十多页以后,找到一处代码

location / {	    
 	if (!-e $request_filename) {
		rewrite  ^/(.*)$  /index.php/$1  last;
                break;
        }
}

location ~ \.php {
	fastcgi_pass 127.0.0.1:9000;
	fastcgi_index index.php;
	include fcgi.conf;
	set $real_script_name $fastcgi_script_name;
	if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
		set $real_script_name $1;
		set $path_info $2;
	}
	fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
	fastcgi_param SCRIPT_NAME $real_script_name;
	fastcgi_param PATH_INFO $path_info;
}

保存修改,重启nginx,刷新浏览器

意想不到的页面出现了

nginx开启pathinfo模式

居然能访问了,终于松了一口气,实在太不容易了。

贴出nginx.conf代码

user  www www;
 
worker_processes 2;
worker_cpu_affinity 01 10;
 
error_log  /data1/logs/nginx_error.log  crit;
 
pid        /usr/local/webserver/nginx/nginx.pid;
 
worker_rlimit_nofile 65535;
 
events
{
  use epoll;
  worker_connections 65535;
}
 
http
{
  include       mime.types;
  default_type  application/octet-stream;
 
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  client_max_body_size 8m;
 
  sendfile on;
  tcp_nopush     on;
 
  keepalive_timeout 60;
  tcp_nodelay on;
 
  fastcgi_connect_timeout 300;
  fastcgi_send_timeout 300;
  fastcgi_read_timeout 300;
  fastcgi_buffer_size 64k;
  fastcgi_buffers 4 64k;
  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k;

  server
  {
	listen 80;
	server_name a.com;
	index index.php;
	root /data0/htdocs/a.com/www;

        location / {	    
 		if (!-e $request_filename) {
			rewrite  ^/(.*)$  /index.php/$1  last;
                	break;
        	}
	}
	
	location ~ \.php {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		include fcgi.conf;
		set $real_script_name $fastcgi_script_name;
			if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
			set $real_script_name $1;
			set $path_info $2;
		}
		fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
		fastcgi_param SCRIPT_NAME $real_script_name;
		fastcgi_param PATH_INFO $path_info;
	}
  }
} 

养成好习惯

1、虽然最终还是解决问题了,但平日要记录一下重要的东西,网络不是万灵

2、就算出现问题也要大概知道什么原因?能不能实现?如何实现?

3、常遇到的问题要反思,举一反三,思考。

文字链接:《配置nginx支持pathinfo模式

文章地址:http://www.qttc.net/201208199.html

除非标注,琼台博客所有博文均为原创,转载请加文字链接注明来源

乳名?小名?昵称?网名?均可

email,放心,我不会给你乱投广告的

想获得回访就把你的站点URL写上(没有留空)

[NOTICE]木要投放广告
[NOTICE]木要骂人,说不该说的话
[NOTICE]自由言论,但要遵纪守法

Comments 6

  • 2
    2015-05-05 19:53:25 [ 跟帖 ]
    1 #
  • 多谢你解决了困扰我多年的问题!
    2015-01-25 18:19:56 [ 跟帖 ]
    2 #
  • 合适lnmp安装包,配置CI框架使用,包括多站点
    2014-12-22 00:55:24 [ 跟帖 ]
    3 #
  • 谢谢,合适我使用
    2014-12-22 00:54:32 [ 跟帖 ]
    4 #
  • 有时在网上找资料确实不容易。。。
    2014-04-30 13:26:42 [ 跟帖 ]
    网上资料并不少,可惜有不少站点是专门采集别人写好的文章,于是搜索的时候往往很多站点的文章都是来自一个站点的,现在开始有些站点盯上我的小站,采集后还不留原文出处
    2014-05-01 15:41:04 [ 跟帖 ]
    5 #