nginx的“/”小细节

2026-08-12
location /api/ {
    proxy_pass http://kitty:5000/;
}

location 中的 /

location/ 决定了 哪些 URL 会被这个规则匹配到,跟转发时怎么拼接无关。


1. location /api/(带尾部斜杠)—— 精确前缀匹配

nginx

location /api/ {
    # 只匹配以 /api/ 开头的请求
}

用户请求

是否匹配

/api/users

✅ 匹配

/api/order/create

✅ 匹配

/api

不匹配(没有斜杠)

/apicore

❌ 不匹配

特点:严格要求路径后面有 /,不会匹配到 /api 本身,也不会匹配到 /apixxx 这种"看起来像"的路径。


2. location /api(不带尾部斜杠)—— 宽泛前缀匹配

nginx

location /api {
    # 匹配所有以 /api 开头的请求
}

用户请求

是否匹配

/api/users

✅ 匹配

/api/

✅ 匹配

/api

✅ 匹配

/apicore

匹配/api 开头)

/apiv2/list

匹配

特点:只要 URL 以 /api 这 4 个字符开头就匹配,容易误伤 /apicore/apiv2 这类路径。


3. location /(根路径)—— 兜底匹配

nginx

location / {
    # 匹配所有请求
}

用户请求

是否匹配

/

✅ 匹配

/api/users

✅ 匹配

/index.html

✅ 匹配

/任意路径

✅ 匹配

特点:这是最宽泛的匹配,通常作为默认兜底规则放在最后。

proxy_pass 中的 /

配置

用户请求

后端接收

模式

proxy_pass http://kitty:5000/; (带 /

/api/users

/users

替换模式(砍掉 /api)只保留/api后的内容

proxy_pass http://kitty:5000; (不带 /

/api/users

/api/users

追加模式(原样保留)

PREV
ubuntu修改ssh登录端口