用户
 找回密码
 入住 CI 中国社区
搜索
查看: 18163|回复: 15
收起左侧

让nginx支持PATH_INFO

  [复制链接]
发表于 2009-2-25 13:34:56 | 显示全部楼层 |阅读模式
摆弄了半天  终于弄好了...虽然不是原创  也发个帖点下注意的地方
  1. server {
  2.         listen       80;
  3.         server_name  localhost;
  4.         index index.html index.htm index.php;
  5.         root   /xampp/htdocs;
  6.         autoindex on;

  7.         location ~ .*\.php {//这里注意php 末尾不要加$ 要不就隔断不能匹配
  8.             fastcgi_pass   127.0.0.1:9000;
  9.             set $path_info "";
  10.             set $real_script_name $fastcgi_script_name;
  11.                    if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {//这里拆分下
  12.                         #set $real_script_name $1;
  13.                         set $path_info $2;//CI里面我设置的是AUTO  用的PATH_INFO就行  
  14.                    }
  15.                    fastcgi_param PATH_INFO $path_info;
  16.             include /APMServ5.2.6/nginx/conf/fastcgi_params;
  17.         }

  18.         log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
  19.              '$status $body_bytes_sent "$http_referer" '
  20.              '"$http_user_agent" $http_x_forwarded_for';
  21.         access_log  /APMServ5.2.6/nginx/logs/access.log  access;
  22.     }
  23. }
复制代码
发表于 2009-2-25 13:40:16 | 显示全部楼层
虽然不用nginx,还是顶楼主
发表于 2009-11-23 17:09:21 | 显示全部楼层
楼主这贴真救了我的命了,NGINX试了REQUEST_URI和QUERY_STRING都不行,自己还改了PHP.INI里的CGI.FIX PATH_INFO都不行,最后终于按照楼主所说的搞定了,感激
发表于 2009-12-31 16:59:39 | 显示全部楼层
好东西。
发表于 2010-5-16 08:43:01 | 显示全部楼层
我用你的方法,没有成功!

PHP复制代码
 
server {
        listen  80;
        server_name     www.damuqiao.com        damuqiao.com;
        index index.html index.htm index.php;
        root    /data0/htdocs/damuqiao/yiyao/web;
        autoindex on;
       
        location ~ .*.php {
                fastcgi_pass   127.0.0.1:9000;
                set $path_info "";
                set $real_script_name $fastcgi_script_name;
                if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
                        #set $real_script_name $1;
                        set $path_info $2;
                }
               
                fastcgi_param PATH_INFO $path_info;
                fastcgi_param SCRIPT_FILENAME /data0/htdocs/damuqiao/yiyao/web/$fastcgi_script_name;
                include /usr/local/nginx/conf/fastcgi_params;
        }
       
        log_format  damuqiao  '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" $http_x_forwarded_for';
        access_log  /data1/logs/damuqiao.log  damuqiao;
}
 
 
复制代码
发表于 2011-2-21 14:29:49 | 显示全部楼层
楼主这办法虽然可行,但并不好,而且 SCRIPT_NAME 也不标准,看我的例子,简单明了并且纠正了 SCRIPT_NAME 的错误

  1. location ~ \.php($|/) {
  2.   root           E:/www;
  3.   
  4.   fastcgi_pass   127.0.0.1:9000;
  5.   fastcgi_index  index.php;
  6.   fastcgi_param  SCRIPT_FILENAME  E:/www$fastcgi_script_name;
  7.   fastcgi_split_path_info ^(.+\.php)(.*)$;   
  8.   fastcgi_param PATH_INFO $fastcgi_path_info;   
  9.   include        fastcgi_params;
  10. }
复制代码
发表于 2011-5-25 17:50:09 | 显示全部楼层
还是楼主的好,我成功了,感谢楼主
发表于 2011-5-25 20:23:44 | 显示全部楼层
好像还是不行。哎
发表于 2011-5-26 14:20:35 | 显示全部楼层
哈, 我们服务器也用的这个. 我不会搞, 有老大在上面顶着, 哈哈.
发表于 2011-6-23 10:57:32 | 显示全部楼层
好东西啊,牛白

本版积分规则