nginx的location配置如何只拦截后半截?

山哥 发布于 2011/08/05 15:53
阅读 2K+
收藏 2

今天终于完成了 Nginx + tomcat 的配置,同时也完成了 Nginx 虚拟目录的配置,但是对虚拟目录有个疑问:

我的配置如下:

location /static/{
   root /home/OA_DATA
}
磁盘/home/OA_DATA 下的目录结构是:

/home/OA_DATA
          /avatars
          /attachments
界面上这样访问: <img src="/static/avatars/avatar-1.jpg" />

规则定义是:Nginx 拦截所有以  /static/ 开头的,并转发到虚拟目录下。

Nginx 解析上面的请求映射虚拟目录为: /home/OA_DATA/static/avatars/avatar-1.jpg

因为多了个 static 目录,所以就访问不到图片了,如何才能让 Nginx 只添加 static/ 后面的路径呢?即:拦截所有以 /static/ 开始的url, 但是只 添加 static/ 后面的路径。

 

 

加载中
1
____33
山哥
山哥
冬之兄弟,能否说清楚点啊
1
山哥
山哥
明白了,呵呵,谢谢冬之兄弟!
网上看了下,alias 和 root 的区别:
最基本的区别: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(快捷方式)了。
返回顶部
顶部