location / 是优先级最低的普通前缀匹配,仅在无更优规则(如精确匹配、最长前缀、正则)命中时生效,用于兜底所有以/开头的请求,常配合try_files实现前端路由支持。

直接写 location / { ... } 就是不带任何符号的通用匹配配置。
这种写法属于前缀匹配,它会匹配所有以 / 开头的请求路径。由于所有合法 URI 都以 / 起始,所以这条规则能兜住全部请求——但注意:它只在没有更优先匹配项命中时才生效。
不带符号的 location / 是怎么工作的
- 它不是“万能兜底”,而是优先级最低的普通前缀匹配
- Nginx 先尝试精确匹配(
=)、前缀最长匹配(含^~)、正则匹配(~/~*),最后才落到location / - 即使写了
location /,只要上面有location /api或location ^~ /static,对应请求就不会进到这里
常见写法示例
location / {
root /usr/share/nginx/html;
index index.html;
}这段配置会让:
-
/→ 返回index.html -
/about→ 尝试找/usr/share/nginx/html/about/index.html或/usr/share/nginx/html/about.html -
/api/user→ 若无其他location /api规则,也会走这里(但通常你会单独配location /api)
容易踩的坑
- 把
location /放在配置最前面,误以为能“先拦截所有请求” → 实际仍按优先级规则执行,顺序不影响普通前缀匹配的优先级 - 和
location = /混淆:后者只响应根路径/,不响应/abc;前者响应所有路径(只要没被更高优规则截走) - 忘记它仍受
root或alias影响:路径拼接逻辑不同,用alias时末尾斜杠要特别注意
实际建议
- 把
location /当作最终 fallback,放在配置靠后位置更清晰 - 需要真正兜底所有未匹配请求时,它很合适;但涉及静态资源、API 转发等场景,应单独配置更具体的规则
- 搭配
try_files使用更健壮,比如:location / { try_files $uri $uri/ /index.html; }这样可支持前端路由(如 Vue Router 的 history 模式)


















