我有两个位置,我的应用程序将提供静态文件,一个是/ 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。
提前感谢您的帮助。
答案 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
声明并在位置部分直接适当地声明root
和alias
来修复它(注意注释掉的行):
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;
}
}