我在这里做错了什么?
这有效:
location / {
alias /var/www/static/;
try_files $uri index.html =404;
}
但事实并非如此:
location /hello {
alias /var/www/static/;
try_files $uri index.html =404;
}
这是我收到的错误:
[error] 14428#0: *1 open() "/usr/share/nginx/html/bundle.js" failed (2: No such file or directory)
我知道 Nginx 正在从错误的目录中寻找 bundle.js。它应该位于 /var/www/static/ 文件夹中。
我可以通过添加来解决这个问题
root /var/www/static/
在我的配置开始时,但如果我添加另一个位置,同样的问题就会再次出现。
location /world {
alias /var/www/another/;
try_files $uri index.html =404;
}
错误:
[error] 14827#0: *1 open() "/var/www/static/bundle2.js" failed (2: No such file or directory)
bundle2.js 应该位于 /var/www/another/ 文件夹中,但是因为我将根目录定义为 /var/www/static/,所以 Nginx 正在从错误的文件夹中寻找 bundle2.js。
以下是整个配置:
server {
listen 80;
root /var/www/static/;
location /hello {
alias /var/www/static/;
try_files $uri index.html =404;
}
location /world {
alias /var/www/another/;
try_files $uri index.html =404;
}
}
答案1
您的 html 文件中如何请求文件?如果您以斜线开头 ( <script src="/bundles.js"></script>
) 请求文件,则它是根目录相关的,这导致 nginx 在网站的根目录中查找文件,对于您的第一个配置,它是默认目录。对于第二个配置,nginx 在“/var/www/static”下查找文件,
如果您的 .js 是通过<script src="bundles.js"></script>
(相对路径) 调用的,它应该可以工作。