我正在尝试从网站的子目录中为文件和资源提供服务,例如:
网站:/ go / tools /(index.html是根文件) 资产链接如下:/go/tools/assets/js/main.js
使用nginx,我的配置如下:
server {
listen 80;
listen 443 ssl http2;
server_name local.tools;
index index.html;
location /go/tools {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
root /code/testing/build;
try_files $uri /$uri /index.html =404;
}
当我使用网址local.tools/go/tools加载网站时,会加载index.html页面并且html如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="icon" href="assets/img/favicon.ico">
<link href="assets/css/vendor/bootstrap.css" rel="stylesheet" type="text/css" />
<link href="assets/css/styles.css" rel="stylesheet" type="text/css" />
</head>
<body>...
所以那部分是好的。问题是样式和JavaScript不存在。当我查看网络选项卡时,我看到每个资产都在加载index.html内容而不是自己的内容。
我的配置中缺少什么,所以如果我去:/go/tools/assets/css/styles.css我看到实际的样式表?
答案 0 :(得分:2)
您需要使用以下配置
location /go/tools {
location /go/tools/assets/ {
alias /code/testing/build/assets/;
}
alias /code/testing/build;
try_files $uri $uri/ /index.html =404;
}
基本上,当网址为/go/tools/assets
时,您需要在构建目录中从/assets
进行搜索。这就是我们在嵌套位置