nginx下的CodeIgniter 3.1 的最佳配置

阅读更多
nginx下 CodeIgniter 3.1 的最佳配置

这是本人原创,转载请注明出处。

网上搜了好久,也没找到,还是得自己弄。
这其中的重要原因是:竟然,官网没有给nginx的配置??
thinkphp 5 ,laravel 5,yii 2,人家的官网都是给 nginx的配置的。
但是 CodeIgniter 真没有。

经本人实际测试的最佳配置如下,和thinkphp5.1 的最佳配置一样的。
特别说明,按照本文的配置,不需要修改php.ini,极为方便。

server {
    listen   80 ;
    server_name  www.d8.com;

    root /var/www/citest;
    index index.php index.html;
    location / {
         try_files  $uri   /index.php$uri$is_args$args; 
    }
    
    # 这行设置使得3个目录被禁止url直接访问。很安全。
    location ~ ^/(application|system|user_guide) {
          deny all;
    }

    location ~ \.php {
        include fastcgi_params;
        fastcgi_pass   php72-fpm:9000;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_split_path_info  ^(.+\.php)(/.*)$;
        fastcgi_param  PATH_INFO $fastcgi_path_info; 
    }
}


这里再说明一下,这是本人实测的结果。
分两种,一种是url中带index.php,一种是url中没有index.php
另外,根据是否有控制器文件夹,也都试过了。
还有,我没有修改默认的路由设置。

我测试的url包括:
http://www.d8.com/index.php/path1/path2/path3?aa=4
http://www.d8.com/path1/path2/path3?aa=4
http://www.d8.com/index.php/pages/view/about3?aa=4
http://www.d8.com/pages/view/about3?aa=4
全部显示成功,全部都有$_GET的值。
前面两个url我建立了application/ path1 这个文件夹,控制器是Path2.php
后两个url是直接在controller下建立了Pages.php 作为控制器。
全部通过!

唯一和thinkphp 的最佳配置的小小差异是,这里添加了对3个目录的直接访问。
因为 ci 默认下载的 类库,把index.php放在最外层了。这样设置的话,就很安全了。


妈妈再也不用担心我找不到 CodeIgniter 3.1 的合适的 nginx 的配置了!




















你可能感兴趣的:(nginx,CodeIgniter)