Nginx下zend framework的设置

由于zf自带的工具,生成的项目都是基于apache的,而nginx和apache的htaccess(即Rewriter规则)又不一样

Java代码  

  1. server {  
  2.   listen 80;  
  3.   server_name servername.com;  
  4.   
  5.   root /var/www/zendapp/public;  
  6.   
  7.   location / {  
  8.     index index.php;  
  9.   }  
  10.   
  11.   # Deny access to sensitive files.  
  12.   location ~ (\.inc\.php|\.tpl|\.sql|\.tpl\.php|\.db)$ {  
  13.     deny all;  
  14.   }  
  15.   location ~ \.htaccess {  
  16.     deny all;  
  17.   }  
  18.   
  19.   # Rewrite rule adapted from zendapp/public/.htaccess  
  20.   if (!-e $request_filename) {  
  21.     rewrite ^.*$ /index.php last;  
  22.   }  
  23.   #图片/js/css不显示解决  
  24.   location ~* ^.+\.(js|ico|gif|jpg|jpeg|pdf|png|css)$ {  
  25.     access_log   off;  
  26.     expires      7d;  
  27.   }  
  28.   # PHP scripts will be forwarded to fastcgi processess.  
  29.   # Remember that the `fastcgi_pass` directive must specify the same  
  30.   # port on which `spawn-fcgi` runs.  
  31.   location ~ \.php$ {  
  32.     include /etc/nginx/fastcgi_params;  
  33.   
  34.     fastcgi_pass   127.0.0.1:9000;  
  35.     fastcgi_index  index.php;  
  36.   }  
  37.   
  38.   location = /50x.html {  
  39.       root   /var/www/default;  
  40.   }  
  41. }  

Nginx 不支持 Apache 的 .htaccess 文件,所以需要在 Nginx 配置文件中编写重写规则。Apache 的绝大部分 RewriteRule 命令都可以不做修改的放到 Nginx 中直接使用。你只要把 RewriteRule 改成 rewrite,[L] 改成 last 之类的就可以了,具体可以看一下 Nginx 的 Rewrite 文档。

 

Nginx部署ThinkPHP项目的办法网上通用解决方法的配置如下

Java代码  

  1. server {  
  2.  ...  
  3.     location / {  
  4.         index  index.htm index.html index.php;  
  5.         #访问路径的文件不存在则重写URL转交给ThinkPHP处理  
  6.         if (!-e $request_filename) {  
  7.            rewrite  ^/(.*)$  /index.php/$1  last;  
  8.            break;  
  9.         }  
  10.     }  
  11.     location ~ \.php/?.*$ {  
  12.         fastcgi_pass   127.0.0.1:9000;  
  13.         fastcgi_index  index.php;  
  14.         #加载Nginx默认"服务器环境变量"配置  
  15.         include        fastcgi.conf;  
  16.           
  17.         #设置PATH_INFO并改写SCRIPT_FILENAME,SCRIPT_NAME服务器环境变量  
  18.         set $fastcgi_script_name2 $fastcgi_script_name;  
  19.         if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {  
  20.             set $fastcgi_script_name2 $1;  
  21.             set $path_info $2;  
  22.         }  
  23.         fastcgi_param   PATH_INFO $path_info;  
  24.         fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name2;  
  25.         fastcgi_param   SCRIPT_NAME   $fastcgi_script_name2;  
  26.     }  
  27. }  

nginx多server

1.检查/etc/nginx/nginx.conf配置文件,确保文件中有:include /etc/nginx/conf.d/*.conf;  

Java代码  

  1. user  lg;  
  2. worker_processes  2;  
  3. error_log  /var/log/nginx/error.log warn;  
  4. pid        /var/run/nginx.pid;  
  5. events {  
  6.     worker_connections  1024;  
  7.     debug_connection 127.0.0.1;  
  8.     debug_connection 192.168.1.0/24;  
  9. }  
  10. http {  
  11.     include       /etc/nginx/mime.types;  
  12.     #  ......  
  13.     include /etc/nginx/conf.d/*.conf;  
  14. }  

 2.关键步骤,在目录/etc/nginx/conf.d/下面新建文件site1.conf,site2.conf,文件名任意写,自己看明白就OK,后缀名需要与步骤1配置的一致,这里为.conf

 

Nginx多Server反向代理配置

在一个server块中配置多个站点

Java代码  

  1. server   
  2. {   
  3.     listen 80;   
  4.     server_name ~^(www\.)?(.+)$;   
  5.     index index.php index.html;   
  6.     root /data/wwwsite/$2;   
  7. }   

 站点的主目录应该类似于这样的结构:

Java代码  

  1. /data/wwwsite/ssdr.info   
  2. /data/wwwsite/linuxtone.org   
  3. /data/wwwsite/baidu.com   

 类似

Java代码  

  1. server_name http://www.*.yourdomain.com/;  
  2. root /PATH/TO/WEBROOT/$host;  
  3. location / {  
  4.     root   /PATH/TO/WEBROOT/$host/;  
  5.     index  index.php;  
  6. }  
  7. location ~ .php$ {  
  8. fastcgi_param  SCRIPT_FILENAME  /PATH/TO/WEBROOT/$host/$fastcgi_script_name;  
  9. }  

 

在一个server块中为一个站点配置多个二级域名 。

实际网站目录结构中我们通常会为站点的二级域名独立创建一个目录,同样我们可以使用正则的捕获来实现在一个server块中配置多个二级域名:

Java代码  

  1. server   
  2. {   
  3.     listen 80;   
  4.     server_name ~^(.+)?\.ssdr\.info$;   
  5.     index index.html;   
  6.     if ($host = ssdr.info){   
  7.     if ($host ~ ^(.*)\.ssdr\.info$ )  
  8.        set $domain $1;   
  9.     }   
  10.     root /data/wwwsite/ssdr.info/$domain/;   
  11. }    

 

站点的目录结构应该如下:

Java代码  

  1. /data/wwwsite/ssdr.info/www/   
  2. /data/wwwsite/ssdr.info/nginx/   

这样访问www.ssdr.info时root目录为/data/wwwsite/ssdr.info/www/,nginx.ssdr.info时为/data/wwwsite/ssdr.info/nginx/,以此类推。

后面if语句的作用是将ssdr.info的方位重定向到www.ssdr.info,这样既解决了网站的主目录访问,又可以增加seo中对www.ssdr.info的域名权重

通用配置

Java代码  

  1. server  
  2. {  
  3.      listen 80;  
  4.      server_name *.dev.com;  
  5.   
  6.      if ($host ~ ^(.*)\.dev\.com$ )  
  7.      {  
  8.          set $path    /Users/apple/development/$1;  
  9.          set $webpath $path/trunk/htdocs;  
  10.      }  
  11.      root $path/trunk/htdocs;  

 

 

时间: 2024-10-15 04:23:13

Nginx下zend framework的设置的相关文章

Zend Framework的设置(apache/rewrite rule写法)

编辑C:WINDOWSSystem32driversetchosts文件,增加一个域,如127.0.0.1  audit.local 修改apache的configure文件,在xampp环境下就是在d:/xampp/apache/conf目录下,首先编辑httpd.conf,开启rewrite模块:将这行的注释去掉:LoadModule rewrite_module modules/mod_rewrite.so然后编辑extra/http-vhosts.conf文件,增加如下行: <Virtu

nginx下wordpress子目录伪静态设置步骤详解

网站访问目录为http://show.abc.com/ ,但是wordpress是装在他下面的manage目录中的,所以访问到的首页也该是http://show.abc.com/manage/ 而wordpress默认访问文章的URL是http://show.abc.com/manage/?p=12 的形式,需要做伪静态使文章访问形式为http://show.abc.com/manage/12 在nginx中配置如下: server { listen  80; server_name     s

zend framework配置操作数据库实例分析_php技巧

zendframework项目环境搭建后,看了下zend framework配置操作数据库,php教程如下: 在application/configs的文件下建立一个config.ini文件 配置信息如下: [general] db.adapter=PDO_MYSQL db.config.host=localhost/IParess db.config.username=username db.config.password=password db.config.dbname=databasen

ZF2入门:Windows环境下从零开始Zend Framework 2.0 (ZF2)环境搭建

原文:http://avnpc.com/pages/zend-framework-2-installation-for-windows 日志未经声明,均为AlloVince原创.版权采用『 知识共享署名-非商业性使用 2.5 许可协议』进行许可. Zend Framework 2.0 (ZF2)正式发布之后不少朋友都进行了尝试,可能由于ZF2涉及到的新特性比较多,有朋友希望能有一篇从零开始Zend Framework 2.0 (ZF2)的教程,于是就有了本篇日志. 以下将记录在Windows环境

ZF2入门:Ubuntu/Linux环境下从零开始Zend Framework 2.0 (ZF2)环境搭建

原文:http://avnpc.com/pages/zend-framework-2-installation-for-linux-ubuntu 日志未经声明,均为AlloVince原创.版权采用『 知识共享署名-非商业性使用 2.5 许可协议』进行许可. 紧接上一篇ZF2入门:Windows环境下从零开始Zend Framework 2.0 (ZF2)环境搭建,本次是Linux/Ubuntu环境下从零开始搭建系统并运行一个ZF2项目的全过程. 写日志的Linux用的是Ubuntu12.04 L

Zend Framework中如何判断URL是否设置了转发

发送HTTP请求:    代码如下 复制代码  $client    = new Zend_Http_Client();  $client->setUri($url);  $client->setConfig(array('maxredirects' => 1));  $response  = $client->request();  if ( $response->isRedirect() ) {     echo "设置了转发";  } else {

Nginx下WordPress伪静态设置教程

对于Apache和Nginx的对比网上也是一大堆了,这里就不再赘述,以后有机会详细讲解. 相信用Wordpress的博主们都会用到伪静态,伪静态的好处是对搜索引擎友好,看起来也好看. 用虚拟主机的用户大都是用Apache,Apache的伪静态Wordpress支持很好,几乎不用自己去编辑.喜爱折腾,喜爱独立博主们用VPS的还是很多的,Nginx在VPS中作为架设环境还是挺常见,但是用Nginx时Wordpress就变成瞎子一般,这里就怎样在Nginx下设置伪静态. 我们不需要了解怎样写伪静态,不

zend Framework中的Layout(模块化得布局)详解

本篇文章是对zend Framework中的Layout(模块化得布局)进行了详细的分析介绍,需要的朋友参考下   1.首先修改application配置文件 resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts" 指定布局文件的位置 2.然后最简单的方法就是修改引导文件 bootstrap.php文件添加一个自动执行的方法:protected function _initDoctype() { } 3.给我们

Zend Framework开发入门经典教程_php实例

本文讲述了Zend Framework开发入门相关知识点.分享给大家供大家参考,具体如下: Zend Framework发布了!虽然仍处于开发初期,这个教程仍突出讲解目前几个最好的功能,并指导你完成一个简单程序的构建. Zend最早在社区里发布了ZF.基于同样的想法,这个教程写来用于展示ZF现有的功能.由于这个教程是在线发布,我将在ZF变化时对其进行更新,以便尽可能有效. 要求 Zend Framework要求PHP5.为了更好利用本教程的代码,你还需要Apache网页服务器.因为示范程序(一个