文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Nginx配置虚拟目录[原创整理]

Nginx配置虚拟目录[原创整理]

时间:2010-06-05  来源:hkebao

Nginx配置虚拟目录

时间:2010-06-05

需求:

    提供一个JSP的虚拟主机。

我计划用nginx提供80服务。后端带Resin跑多个虚拟主机。虚拟主机是可以配置给多域名解析。

之前我们有配置过resin 的虚拟主机的。也有配置其虚拟目录其配置是这样的

<host id="www.aaa.com">

        <root-directory>D:\myweb\proj1</root-directory>

        <web-app id="/test" document-directory="app1/">

            <welcome-file-list>login.jsp</welcome-file-list>

            <character-encoding>UTF-8</character-encoding>

            <stderr-log path='D:\myweb\proj1\app1\stderr.log' rollover-size="2mb" />

            <stdout-log path='D:\myweb\proj1\app1\stdout.log' rollover-size='2mb' />

        </web-app>

        <web-app id="/test2" document-directory="app2/">

            <welcome-file-list>login.jsp</welcome-file-list>

            <character-encoding>UTF-8</character-encoding>

            <stderr-log path='D:\myweb\proj1\app2\stderr.log' rollover-size="2mb" />

            <stdout-log path='D:\myweb\proj1\app2\stdout.log' rollover-size='2mb' />

        </web-app>     

    </host>

    <host id="www.bbb.com">

        <root-directory>D:\myweb\proj2</root-directory>

        <web-app id="/test" document-directory="app1/">

            <welcome-file-list>login.jsp</welcome-file-list>

            <character-encoding>UTF-8</character-encoding>

            <stderr-log path='D:\myweb\proj2\app1\stderr.log' rollover-size="2mb" />

            <stdout-log path='D:\myweb\proj2\app1\stdout.log' rollover-size='2mb' />

        </web-app>

        <web-app id="/test2" document-directory="app2/">

            <welcome-file-list>login.jsp</welcome-file-list>

            <character-encoding>UTF-8</character-encoding>

            <stderr-log path='D:\myweb\proj2\app2\stderr.log' rollover-size="2mb" />

            <stdout-log path='D:\myweb\proj2\app2\stdout.log' rollover-size='2mb' />

        </web-app>     

</host>

 

解释一下:定义了两个虚拟主机这样的话就可以绑定两个域名即一个IP绑定多个域名。一般的空间提供商们也是这样来配置的。而且同一级域名下面还可以配置虚拟目录。比如像同样的sina.cn域名下面可以定义如下的两个虚拟目录www.sina.cn/blog/      

www.sina.cn/news   

这样即在同一个域名下面跑两个虚拟目录!

 

现在来看一下nginx如何来配置这个呢?

 

 

 

 

 

 

 

上一篇文章我们介绍了nginx配置虚拟主机的方法现在来配置一下如何配置虚拟目录

比如说我们的虚拟主机域名为http://www.aaa.com/ 我现在想要实现这种效果

http://www.aaa.com/app1/

http://www.aaa.com/app2/

如何配置虚拟目录呢?

 

 

资料引入:

    最基本的区别:alias指定的目录是准确的,root是指定目录的上级目录,并且该上级目录要含有location指定名称的同名目录。另外,根据前文所述,使用alias标签的目录块中不能使用rewrite的break。

说不明白,看下配置:

location /abc/ {
alias /home/html/abc/;
}

在这段配置下,http://test/abc/a.html就指定的是/home/html/abc/a.html。这段配置亦可改成

location /abc/ {
root /home/html/;
}

这样,nginx就会去找/home/html/目录下的abc目录了,得到的结果是相同的。

但是,如果我把alias的配置改成:

location /abc/ {
alias /home/html/def/;
}

那么nginx将会从/home/html/def/取数据,这段配置还不能直接使用root配置,如果非要配置,只有在/home/html/下建立一 个 def->abc的软link(快捷方式)了。

一般情况下,在location /中配置root,在location /other中配置alias是一个好习惯。

至于alias和root的区别,我估计还没有说完全,如果在配置时发现奇异问题,不妨把这两者换换试试。

 

 

 

心得:location / {} 里面使用root关键字。而在其他的URI配置中使用alias

Alias 是准确定位。跟URI无关

ROOT  与URI有关。

 

 

 

 

虚拟主机目录:D:\myweb\proj3

虚拟目录1   :D:\myweb\proj3\app1

虚拟目录2   :D:\myweb\proj3\app2

 

来看我们的配置

 

server {

    listen 80; 

    server_name www.aaa.com;   

    root    D:\myweb\proj3;

    location / {       

       index index.html index.htm;

    }

    location /app1/{

       alias D:\myweb\proj3\app1\;

       index index.html index.htm;

       break;

    }

    location /app2/{

       alias D:\myweb\proj3\app2\;

       index index.html index.htm;

       break;

    }

    location ~*\.(gif|jpg|png)$ {

       expires  30d;

    }

}

这样的话我们就可以配置出来像:http://www.aaa.com/app2/ 这样的目录值的!

 

笔记:

    推荐配置在 /app1/ 里面使用alias哦!不要使用root了

 

 

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载