Nginx配置中静态位置的多个位置

时间:2013-04-01 04:00:10

标签: nginx

我有两个位置,我的应用程序将提供静态文件,一个是/ my / path / project / static,另一个是/ my / path / project / jsutils / static。

我很难让网络服务器在两个目录中查找静态内容。这是我的应用程序的nginx配置文件中的静态位置条目。

    location ^~ /static {
        root   /my/path/project/static;
        alias /my/path/project/jsutils/static;
       index  index.html index.htm;
    }

我收到一条错误消息:“alias”指令是重复的,之前指定了“root”指令。

我不确定如何在静态内容的这两个路径中查看nginx。

提前感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

您可以使用try_files(http://wiki.nginx.org/HttpCoreModule#try_files)。假设您的静态文件位于/ my / path / project / static和/ my / path / project / jsutils / static中。你可以试试这个:

location ^~ /static {
   root   /my/path/project;
   index  index.html index.htm;
   try_files $uri $uri/ /jsutils$uri /jsutils$uri/ =404;
}

让我知道它是否有效。谢谢!

答案 1 :(得分:2)

location ^~ /static {
    root /my/path/project/static;
    index index.html index.htm;
    try_files $uri $uri/ @secondStatic;
}

location @secondStatic {
    root /my/path/project/jsutils/static;
}

首先在/ my / path / project / static中搜索文件,如果在那里找不到,则会触发secondStatic位置,其中root被更改为/ my / path / project / jsutils / static

答案 2 :(得分:0)

只需用nginx语言实现配置:

location /my/path/project/static {
  try_files $uri =404;
}
location /my/path/project/jsutils/static {
  try_files $uri =404;
}

答案 3 :(得分:0)

我有完全相同的问题,当root覆盖alias时,看起来nginx不喜欢。我通过首先删除服务器部分内的root声明并在位置部分直接适当地声明rootalias来修复它(注意注释掉的行):

server {
#    root /usr/share/nginx/html;
    location /logs/ {
        root /home/user/develop/app_test;
        autoindex on;
    }
    location /logs2/ {
#        root /home/user/branches/app_test;
        alias /home/user/branches/app_test/logs/;
        autoindex on;
    }
}