我似乎总是遇到nginx配置问题。我的SPA位于/ mnt / q / app(启用了pushstate),前端根位于客户端/公共端。应该将所有内容映射到index.html,应用程序会选择路由并决定要执行的操作。
索引的完整路径为/mnt/q/app/client/public/index.html
。
我觉得我现在用完了选项。无论我做什么,我只是从nginx得到404,我认为配置很简单,并且不知道什么是错的。
server {
listen 80;
server_name app.dev;
root /mnt/q/app;
location / {
root /client/public;
try_files $uri @rewrites =404;
}
location @rewrites {
rewrite ^(.+)$ /index.html last;
}
}
感谢任何帮助。
答案 0 :(得分:9)
如果nginx
从根查看文件系统,则root
应设置为/mnt/q/app/client/public
,而不是您正在使用的两个值中的任何一个。
try_files
指令的最后一个元素可以是默认操作(例如/index.html
),命名位置或响应代码。您在倒数第二个元素中有一个命名位置 - 将被忽略。
您的指定位置应该有效,但不是必需的,因为try_files
能够更简单地实现它。有关详情,请参阅this document。
例如:
root /mnt/q/app;
location / {
root /mnt/q/app/client/public;
try_files $uri $uri/ /index.html;
}
location /api {
}
location /auth {
}
$uri/
元素将向目录添加尾随/
,以便index
指令可以正常工作 - 如果不需要,则不必添加它。