location / 能匹配所有请求,因其匹配以/开头的任意URI,作为优先级最低的兜底规则;常用于前端History模式,配合try_files $uri $uri/ /index.html实现单页应用路由 fallback。

用 location / 就能匹配所有请求,它是 Nginx 最基础、最常用的兜底路由配置。
为什么 location / 能兜住全部请求
因为所有合法的 URI 都以 / 开头,所以这个规则会作为最后的 fallback 生效——只要前面没有更高优先级的 location 匹配成功,它就会被选中。
- 它属于“普通前缀匹配”,优先级在精确匹配(
=)、^~和正则匹配之后 - 即使写在配置文件最前面,Nginx 也会按优先级重新判断,不是“先到先得”
- 它不拦截已明确匹配的路径(比如
/api、/static),只处理剩余流量
典型用法:前端 History 模式兜底
单页应用(如 Vue/React)启用 History 模式后,刷新页面可能 404。解决方法是在 location / 中加 try_files:
当代理已经知道网站路由或内容URL,并且在启动前需要有效的sitemap XML、sitemap索引或robots.txt引用时,请使用sitemap。这是一个发布构件技能,而不是爬虫或SEO平台。
location / {
root /var/www/myapp;
try_files $uri $uri/ /index.html;
}-
$uri:尝试找真实存在的静态文件(main.js、style.css等) -
$uri/:尝试匹配目录(避免把/admin/当作文件去查) -
/index.html:找不到资源时返回首页,交由前端 JS 处理路由
注意 API 路径别被兜底覆盖
如果后端 API 也走同域名(比如 /api/v1/users),必须在 location / 之前单独定义 API 规则:
location /api/ {
proxy_pass http://backend-api;
}
<p>location / {
root /var/www/myapp;
try_files $uri $uri/ /index.html;
}- 顺序很重要:Nginx 按配置块出现顺序检查,
/api/必须写在/上面 - 路径结尾带斜杠更安全,避免
/api和/apis冲突 - proxy_pass 后的地址末尾是否加
/,会影响路径重写逻辑,需保持一致
不推荐直接 return 或 rewrite 兜底
除非特殊调试,不要这样写:
location / {
return 404 "Not found";
# 或
rewrite ^(.*)$ /404.html break;
}- return 会直接响应,无法做静态资源服务或代理
- rewrite 是重写 URI,不是兜底逻辑;用错容易造成循环或 500
- 真正需要兜底时,优先用
try_files或proxy_pass显式分发


















