我正在尝试执行基于路径的路由而不是子域来为 React 应用程序的构建文件夹提供服务。用于为构建文件夹中的静态文件提供服务的 nginx 配置是:
server {
listen 80;
listen [::]:80;
root /var/www/Project/build;
index index.html index.htm index.nginx-debian.html;
server_name web.example.com;
location / {
try_files $uri $uri /index.html;
}
}
目前它在web.域名.xyz但我想要类似的东西域名.xyz/web
我参考了本文档并做了类似的事情来提供在 build 文件夹中创建的 index.html 文件
server {
listen 80;
listen [::]:80;
root /var/www/project/build;
index index.html index.htm index.nginx-debian.html;
server_name example.com;
location /web {
try_files $uri $uri /index.html;
}
}
答案1
指令的缺陷root
在于,在解析请求时,URI 会附加在其后面。
在您的情况下,当向发出请求时http://www.example.com/web/
,nginx 会尝试寻找/var/www/project/build/web/index.html
以满足该请求。
如果您想将文件存储在build
而不是 中build/web
,则需要使用alias
指令:
location /web {
alias /var/www/project/build;
try_files $uri $uri/ /index.html;
}