zoukankan      html  css  js  c++  java
  • 配置nginx下别名alias支持PHP fastcgi解析

    1)参看如下连篇文章:
    Nginx设置alias实现虚拟目录 alias与root的用法区别
    http://down.chinaz.com/server/201111/1382_1.htm
    Nginx下alias支持PHP的问题
    http://i.laoer.com/nginx-alias-php.html

    2)我的环境是:web根目录在 /var/www/html/中,但是我要加上一个类似于apache的别名目录 /bbs ,此目录不在 web根目录中。
    我的配置文件如下:

    server {
        listen       80;
        server_name    localhost;
        default_type text/plain;

        location / {
            root    /var/www/html;
            index    index.php index.htm index.html;

        }

        location = /extension/sub {
            set $push_channel_id $arg_exten;
            push_subscriber long-poll;
            push_subscriber_concurrency broadcast;
            push_channel_group broadcast;
            default_type text/plain;
            #default_type text/html;
        }
        location = /extension/pub {
            set $push_channel_id $arg_exten;
            push_publisher;
            push_min_message_buffer_length 0;
            push_max_message_buffer_length 0;
            push_message_timeout 1h;
            push_channel_group broadcast;
            default_type text/plain;
            #default_type text/html;
        }

        location /bbs {
            alias /opt/bbs/;
            index index.html index.htm index.php;
        }
        location ~ ^/bbs/.+.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param SCRIPT_FILENAME /opt$fastcgi_script_name;
            include        fastcgi_params;
            #include fastcgi.conf;
        }

      location ~ .php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
            include        fastcgi_params;
            #include fastcgi.conf;
        }

    }

    说明: 上面这个就是成功的例子。但是又如下几点需要注意:
    1)location ~ .php$ {}  段,必须放在 location ~ ^/bbs/.+.php$ {} 段后面,否则/bbs/的url打不开
    2) location ~ ^/bbs/.+.php$ {} 里面也可以写成如下:
    location ~ ^/bbs/.+.php$ {
            root /opt;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    也就是用 变量名 $document_root 代替 /opt; 其实每个 location {}中的 $document_root 都是局部变量,都是在本段配置 root指令指定的路径。

    以上配置完全可以通过nginx的第3放插件 echo 模块来得到验证,方法如下:
    location /echo {
            root /etc/asterisk;
            #echo "$document_root";
            echo "$fastcgi_script_name";
    }

  • 相关阅读:
    (转)要在自己感兴趣的领域成为专家,要经过一万小时训练
    (学习日记)数据结构第一章中life游戏开发的学习记录
    (转)响应式Web设计是大势所趋还是时代的产物
    (学习日记)裘宗燕:C/C++ 语言中的表达式求值
    (转)如果你喜欢编程 给想做程序员的人的7个建议
    NHibernate 中删除数据的几种方法
    如何避免在安装SQL SERVER 2008时,出现Rule “Previous releases of Microsoft Visual Studio 2008″ failed.
    【转】A brief overview of Ncqrs
    爱博图微博图片批量下载小工具
    解释用Q号算出你的年龄的“奥妙”。。。
  • 原文地址:https://www.cnblogs.com/voiphudong/p/3242913.html
Copyright © 2011-2022 走看看