我的 nginx 配置没有按预期工作。这是我在 nginx.conf 中的位置配置:
location / {
proxy_pass "https://localhost:9002";
}
location /app {
root /usr/local/var/www;
index index.html;
# autoindex off;
try_files $uri /index.html;
}
当我执行 /app/some-url 时它的打开方式http://本地主机:9002。我希望它能加载我的静态网站
当我评论位置/块时,它可以正常工作并打开静态站点。
答案1
使用root
指令,通过将值与 URI 连接起来计算静态资源的路径名root
。在您的例子中,URI/app/foo.css
应位于/usr/local/var/www/app/foo.css
。请注意,app
是目录中的子目录www
。请参阅这个文件了解详情。
指令的最后一项try_files
是 URI、错误代码或命名位置。静态应用程序的 URI 以 开头/app
,因此默认 URI 可能应该/app/index.html
用于定位正确的文件。请参阅这个文件了解详情。
出于简单和效率的原因,最好的解决方案是将所有文件移动到与 URI 前缀同名的目录中(例如app
)。
例如:
/usr/local/var/www/app/index.html
/usr/local/var/www/app/foo.js
/usr/local/var/www/app/foo.css
Nginx 配置如下:
location /app {
root /usr/local/var/www;
index index.html;
try_files $uri $uri/ /app/index.html;
}
如果包含静态应用程序的目录与用于访问它的 URI 前缀不同,则需要使用指令alias
或其他技巧来重写 URI,以便root
正常工作。请参阅这个文件了解详情。
例如:
/usr/local/var/www/index.html
/usr/local/var/www/foo.js
/usr/local/var/www/foo.css
Nginx 配置如下:
location /app {
alias /usr/local/var/www;
index index.html;
if (!-e $request_filename) { rewrite ^ /app/index.html last; }
}
和值应都以 结尾,location
或都不以 结尾。避免同时使用和,因为alias
/
/
alias
try_files
长期问题。 看这种警告关于 的使用if
。
答案2
否则移动location /app
上述内容location /
/ 优先且location /app
被忽略。