Nginx——提供静态文件服务

Nginx——提供静态文件服务

我在这里做错了什么?

这有效:

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>(相对路径) 调用的,它应该可以工作。

相关内容