Nginx配置PHP的Yii与CakePHP框架的rewrite规则示例

Yii的Nginx rewrite

如下为nginx yii的重写

server {
set $host_path "/data/site/www.jb51.net";
 access_log /data/logs/nginx/www.jb51.net_access.log main;
server_name jb51.net www.jb51.net;
root $host_path/htdocs;
 set $yii_bootstrap "index.php";
# define charset
 charset utf-8;
location / {
 index index.html $yii_bootstrap;
 try_files $uri $uri/ /$yii_bootstrap?$args;
 }
# deny access to protected directories
 location ~ ^/(protected|framework|themes/w+/views) {
 deny all;
 }
#avoid processing of calls to unexisting static files by yii
 location ~ .(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
 try_files $uri =404;
 }
# prevent nginx from serving dotfiles (.htaccess, .svn, .git, etc.)
 location ~ /. {
 deny all;
 access_log off;
 log_not_found off;
 }
# php-fpm configuration using socket
 location ~ .php {
 fastcgi_split_path_info ^(.+.php)(.*)$;
#yii catches the calls to unexising PHP files
 set $fsn /$yii_bootstrap;
 if (-f $document_root$fastcgi_script_name){
 set $fsn $fastcgi_script_name;
 }
fastcgi_pass unix:/tmp/php5-fpm.sock; # 改成你对应的FastCGI
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fsn;
#PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_param PATH_TRANSLATED $document_root$fsn;
## Tweak fastcgi buffers, just in case.
 fastcgi_buffer_size 128k;
 fastcgi_buffers 256 4k;
 fastcgi_busy_buffers_size 256k;
 fastcgi_temp_file_write_size 256k;
 }
}

配置完了别忘了重启Nginx。

CakePHP的Nginx重写规则
依然简单粗暴,直接上代码例子,nginx重写规则如下

server {
 listen 80;
 server_name www.jb51.net;
root /data/site/www.jb51.net;
 index index.php;
access_log /data/logs/nginx/www.jb51.net_accerss.log;
 error_log /data/logs/nginx/www.jb51.net_error.log;
# main cakephp rewrite rule
 location / {
 try_files $uri $uri/ /index.php?$uri&$args;
 }
location ~ .php$ {
 root /data/site/www.jb51.net;
 try_files $uri =404;
 fastcgi_pass unix:/tmp/php5-fpm.sock; # 改成你对应的FastCGI
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 fastcgi_buffer_size 128k;
 fastcgi_buffers 256 4k;
 fastcgi_busy_buffers_size 256k;
 fastcgi_temp_file_write_size 256k;
 }
}

重启nginx即可

(0)

相关推荐

  • cakephp2.X多表联合查询join及使用分页查询的方法

    本文实例讲述了cakephp2.X多表联合查询join及使用分页查询的方法.分享给大家供大家参考,具体如下: 格式化参数: public function getconditions($data){ $this->loadModel("Cm.LoginHistory"); $conditions = array(); foreach ($data as $key=>$val){ if($key=='start_date'){ $conditions['LoginHistor

  • CakePHP框架Model关联对象用法分析

    本文实例讲述了CakePHP框架Model关联对象.分享给大家供大家参考,具体如下: CakePHP 提供关联数据表间的映射,共有4种类型的关联: hasOne,hasMany,belongTo,hasAndBelongsToMany. 设定了Model间的关联关系定义,CakePHP就会将基于关系数据库的数据映射为基于对象的关系模型. 但是你应该确保遵循CakePHP的命名规则. 命名规则中需要考虑的3个内容是,外键,model名字,表名. 外键:单数形式的 modelName_id 表名:复

  • cakephp常见知识点汇总

    本文实例总结了cakephp常见知识点.分享给大家供大家参考,具体如下: 1. 调用其他控制器的模板,重定向 方法一: 在此调用/views/tasks/tasks下的hello.ctp模板 $this -> viewPath = 'tasks'; $this -> render('hello'); 方法二(带参): $this->redirect(array('controller'=>'users','action'=>'welcome',urlencode($this-

  • CakePHP框架Session设置方法分析

    本文实例讲述了CakePHP框架Session设置方法.分享给大家供大家参考,具体如下: CakePHP Session 存储选项 CakePHP提供给用户了3种Session数据保存方式: 1. CakePHP安装目下的临时文件; 2. 采用PHP的默认机制; 3. 或者序列化到数据库中. 对应的设置在core.php中分别为: define('CAKE_SESSION_SAVE', 'php'); # 设置为 'cake',保存session到 /cakedistro/tmp目录 # 设置为

  • CakePHP框架Model函数定义方法示例

    本文实例讲述了CakePHP框架Model函数定义方法.分享给大家供大家参考,具体如下: 在CakePHP中,MVC的架构是清晰的,而在实际做项目中,我发现仍然有很多人喜欢在Controller中堆砌函数,这样做也未尝不可,但是,作为一个百万行级的大项目来说,这种违背MVC思想的做法虽然可能暂时给程序结构带来便利,但从长远来看,是万万不可取的! 我们应该将系统常用到的某些函数定义在Model中,特别是纯粹的的数据处理函数和数据查询函数: 譬如,在Blog中像下面这样的条件查询: /* * * B

  • 基于CakePHP实现的简单博客系统实例

    本文实例讲述了基于CakePHP实现的简单博客系统.分享给大家供大家参考.具体实现方法如下: PostsController.php文件: <?php class PostsController extends AppController { public $helpers = array('Html', 'Form', 'Session'); public $components = array('Session'); public function index() { $this->set

  • cakephp打印sql语句的方法

    本文实例讲述了cakephp打印sql语句的方法.分享给大家供大家参考.具体实现方法如下: 将以下语句复制到你的代码中,可以打印出在这之前所有的sql语句: $sources = ConnectionManager::sourceList(); if (!isset($logs)): $logs = array(); foreach ($sources as $source): $db =& ConnectionManager::getDataSource($source); if (!$db-

  • Cakephp 执行主要流程

    加载基本文件 cake/basics.php 里面定义了常用的方法以及时间常量 $TIME_START = getMicrotime(); 记录开始执行时间 cake/config/paths.php 里面定义一些基本路径 cake/lib/object.php cake的基本类 cake/lib/inflector.php 这里主要是处理单复数,带下划开命名以及驼峰式命名 cake/lib/configure.php 里面提供文件配置的读写,路径的设置,以及加载文件的方法 cake/lib/c

  • 配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境

    1. 安装配置Apahce 安装配置Apache是比较简单的, 跟着安装向导一步步往下走就能搞定.最多就是在配置端口的地方需要注意一下,如果已经安装了其它Web服务器占用了80端口,那记得配置的时候选一个别的端口.向导中忘了设置,在Apache的conf/httpd.conf中修改下面这句就好: Listen 127.0.0.1:80 2. 安装配置PHP5 PHP5也是一路安装就完了.要让Apache能解释PHP页面,继续修改Apache的conf/httpd.conf文件. 首先,假设PHP

  • CakePHP去除默认显示的标题及图标的方法

    去除的办法是: 修改cake\libs\view\templates\layouts\default.thtml,这个是视图文件的通用模板框架(带头部和脚部). 另外: cakephp视图文件的扩展名都是thtml,这个是默认值,如果想修改后缀名也是可以的. 修改的方法是: 早cake\libs\controller\controller.php里把 var $ext='.thtml'改成html即可.

随机推荐