全部博文(2065)
分类: 系统运维
2010-06-05 10:36:36
Nginx配置虚拟目录
时间:
需求:
提供一个JSP的虚拟主机。
我计划用nginx提供80服务。后端带Resin跑多个虚拟主机。虚拟主机是可以配置给多域名解析。
之前我们有配置过resin 的虚拟主机的。也有配置其虚拟目录其配置是这样的
解释一下:定义了两个虚拟主机这样的话就可以绑定两个域名即一个IP绑定多个域名。一般的空间提供商们也是这样来配置的。而且同一级域名下面还可以配置虚拟目录。比如像同样的sina.cn域名下面可以定义如下的两个虚拟目录www.sina.cn/blog/
这样即在同一个域名下面跑两个虚拟目录!
现在来看一下nginx如何来配置这个呢?
上一篇文章我们介绍了nginx配置虚拟主机的方法现在来配置一下如何配置虚拟目录
比如说我们的虚拟主机域名为 我现在想要实现这种效果
如何配置虚拟目录呢?
资料引入:
最基本的区别:alias指定的目录是准确的,root是指定目录的上级目录,并且该上级目录要含有location指定名称的同名目录。另外,根据前文所述,使用alias标签的目录块中不能使用rewrite的break。
说不明白,看下配置:
location /abc/ {
alias /home/html/abc/;
}
在这段配置下,就指定的是/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 ;
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;
}
}
这样的话我们就可以配置出来像: 这样的目录值的!
笔记:
推荐配置在 /app1/ 里面使用alias哦!不要使用root了