# 前言

# nginx 规则分类

nginx规则分类
=   精确匹配                   (优先级最高)# 只匹配根目录结尾的请求,后面不能带任何字符串
^~   精确前缀匹配               (优先级仅次于=
~    区分大小写的正则匹配       (优先级次于^~)
~*   不区分大小写的正则匹配     (优先级次于^~)
/uri 普通前缀匹配               (优先级次于正则)# 最常用
/    通用匹配                   (优先级最低)# 默认匹配路径

# 下面是测试 location 块中 " / " 的匹配案例

前置测试访问域名:http://127.0.0.1/api/test


# location 和 proxy_pass 都不带/ ,则真实地址会带 location 匹配目录 /api/

location配置
location /api {
     proxy_pass http://127.0.0.1:8080;
 }

最终访问地址: http://127.0.0.1/api/test --> http://127.0.0.1:8080/api/test


# location 带/ ,proxy_pass 不带/ ,则真实地址会带 location 匹配目录 /api/

location配置
location /api/ {
     proxy_pass http://127.0.0.1:8080;
 }

最终访问地址: http://127.0.0.1/api/test --> http://127.0.0.1:8080/api/test


# location 不带/ ,proxy_pass 带/ ,则真实地址会 带/

location配置
location /api {
    proxy_pass http://127.0.0.1:8080/;
}

最终访问地址:http://127.0.0.1/api/test --> http://127.0.0.1:8080//test


# location 和 proxy_pass 都带/ ,则真实地址不带 location 匹配目录

location配置
location /api/ {
    proxy_pass http://127.0.0.1:8080/;
}

最终访问地址:http://127.0.0.1/api/test --> http://127.0.0.1:8080/test


# 同 1,location 和 proxy_pass 都不带/ ,但 proxy_pass 带地址 ,则真实地址匹配地址会替换 location 匹配目录

location配置
location /api {
     proxy_pass http://127.0.0.1:8080/server;
 }

最终访问地址: http://127.0.0.1/api/test --> http://127.0.0.1:8080/server/test


# 同 2,location 带/ ,proxy_pass 不带/ ,但 proxy_pass 带地址 ,则真实地址会直接连起来

location配置
location /api/ {
     proxy_pass http://127.0.0.1:8080/server;
 }

最终访问地址: http://127.0.0.1/api/test --> http://127.0.0.1:8080/servertest


# 同 2,location 不带/ ,proxy_pass 带/ ,但 proxy_pass 带地址 ,则真实地址会多个 /

location配置
location /api {
     proxy_pass http://127.0.0.1:8080/server/;
 }

最终访问地址: http://127.0.0.1/api/test --> http://127.0.0.1:8080/server//test


# 同 4,location 和 proxy_pass 都带/ ,但 proxy_pass 带地址

location配置
location /api/ {
     proxy_pass http://127.0.0.1:8080/server/;
 }

最终访问地址: http://127.0.0.1/api/test --> http://127.0.0.1:8080/server/test


# 总结

  1. proxy_pass 代理地址端口后有目录 (包括 / ),则 去除location 匹配目录
  2. proxy_pass 代理地址端口后无任何,转发后地址:代理地址 + 访问 URL 目录部
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Piggy 微信支付

微信支付

Piggy 支付宝

支付宝