Nginx 静态站点从根目录而不是子目录获取资源

Nginx 静态站点从根目录而不是子目录获取资源

我正在尝试从同一个 EC2 实例提供 API 和前端静态站点。我使用 nginx 和我的服务器块,如下所示,API 位于端口 8001 中,静态文件要提供到/sub/

    server_name  abc.def.com www.abc.def.com;
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;


location / {
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  Host $host;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  X-Forwarded-Proto $scheme;
    proxy_pass http://localhost:8001/;
}

location /sub/ {
    alias /var/www/subweb/;
    index index.html;
}

索引.html

<script src="/vendor.aea0bbda027e3c98f5c1.js"></script>

然而发生的事情是我的索引.html尝试从根目录获取资源(javascript 文件),而不是/子/

我该如何修复它以便它指向正确的位置?

*更新 - 根据建议,我已经切换了位置的顺序,但它仍然没有按预期工作:

server_name  abc.def.com www.abc.def.com;
root         /usr/share/nginx/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location /sub/ {
    alias /var/www/subweb/;
    index index.html;
}

location / {
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  Host $host;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  X-Forwarded-Proto $scheme;
    proxy_pass http://localhost:8001/;
}

答案1

更改位置的顺序。

相关内容