上山打老虎 发表于 2021-8-22 22:46:13

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/$1last;

                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.conf代码:
复制代码代码如下:


userwww www;



worker_processes 2;

worker_cpu_affinity 01 10;



error_log/data1/logs/nginx_error.logcrit;



pid      /usr/local/webserver/nginx/nginx.pid;



worker_rlimit_nofile 65535;



events

{

use epoll;

worker_connections 65535;

}



http

{

include       mime.types;

default_typeapplication/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/$1last;

                  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、常遇到的问题要反思,举一反三,思考。

文档来源:http://www.zzvips.com/article/21567.html
页: [1]
查看完整版本: nginx中配置pathinfo模式示例