第一种情况:
- 配置:
location /static proxypass 192.168.2.321:81
- 解释:
- Location匹配到
/static
,但不包括后面的斜杠。 - Proxypass没有斜杠结尾,所以直接将匹配到的路径附加到proxypass地址后。
- Location匹配到
- 最终转发地址:
192.168.2.321:81/static/a.html
第二种情况:
- 配置:
location /static proxypass 192.168.2.321:81/
- 解释:
- Location匹配到
/static
,但不包括后面的斜杠。 - Proxypass以斜杠结尾,表示它是一个目录,所以只会附加请求的路径部分(
a.html
)。
- Location匹配到
- 最终转发地址:
192.168.2.321:81/a.html
第三种情况:
- 配置:
location /static/ proxypass 192.168.2.321:81
- 解释:
- Location匹配到
/static/
,包括后面的斜杠。 - Proxypass没有斜杠结尾,所以将匹配到的完整路径(包括斜杠)附加到proxypass地址后。
- Location匹配到
- 最终转发地址:
192.168.2.321:81/static/a.html
第四种情况:
- 配置:
location /static/ proxypass 192.168.2.321:81/
- 解释:
- Location匹配到
/static/
,包括后面的斜杠。 - Proxypass以斜杠结尾,表示它是一个目录,所以只会附加请求的路径部分(
a.html
)。
- Location匹配到
- 最终转发地址:
192.168.2.321:81/a.html
更清晰、更易于理解的表达:
概念定义: - Location路径(Path1): Nginx配置中
location
后面指定的路径。 - 请求路径(Path2): 客户端请求的URL中
location
路径之后的部分。
转发规则:
- 如果Proxypass以斜杠(/)结尾:
- Nginx认为Proxypass指定的是一个目录。
- 转发时,丢弃Location路径(Path1),只保留请求路径(Path2)。
- 结果格式:
Proxypass地址 + Path2
- 如果Proxypass不以斜杠(/)结尾:
- Nginx认为Proxypass指定的是一个完整的路径或文件。
- 转发时,将Location路径(Path1)和请求路径(Path2)都附加到Proxypass地址后。
- 结果格式:
Proxypass地址 + Path1 + Path2
示例:
- 对于请求
192.168.1.123:80/static/a.html
:- Path1(Location路径):
/static
或/static/
(取决于配置) - Path2(请求路径):
a.html
- Path1(Location路径):