nginx简单配置四种携带/时的拼接关系
一、代理静态文件
1、 当 location 尾部有 /,且代理地址尾部也有 / 时:(常用)
location /test11/ {
root /usr/local/nginx/html/;
}
则访问 http://ip/test11/aaa,实际访问的是/usr/local/nginx/html/aaa
2、 当 location 尾部有 /,代理地址尾部没有 / 时:(几乎不用)
location /test10/ {
root /usr/local/nginx/html;
}
则访问 http://ip/test10/aaa,实际访问的是/usr/local/nginx/html/aaa
3、 当 location 尾部没有 /,代理地址尾部有 / 时:(和4一致)
location /test01 {
root /usr/local/nginx/html/;
}
则访问 http://ip/test01/aaa,实际访问的是/usr/local/nginx/html/test01/aaa
4、 当 location 尾部没有 /,代理地址尾部没有 / 时:(常用)
location /test00 {
root /usr/local/nginx/html;
}
则访问 http://ip/test00/aaa,实际访问的是/usr/local/nginx/html/test00/aaa
则访问 http://ip/test00xx/aaa,实际访问的是/usr/local/nginx/html/test00xx/aaa
二、代理地址(尾部跟一个与location相同的路径)
下图是四种不同的情况下的映射关系截图
1、 当 location 尾部有 /,且代理地址尾部也有 / 时:(常用)
location /testproxy11/ {
proxy_pass http://127.0.0.1:10000/testproxy11/;
}
则访问 http://ip/testproxy11/aaa,实际访问的是http://127.0.0.1:10000/testproxy11/aaa
2、 当 location 尾部有 /,代理地址尾部没有 / 时:(几乎不用)
location /testproxy10/ {
proxy_pass http://127.0.0.1:10000/testproxy10;
}
则访问 http://ip/testproxy10/aaa,实际访问的是http://127.0.0.1:10000/testproxy10aaa
3、 当 location 尾部没有 /,代理地址尾部有 / 时:
location /testproxy01 {
proxy_pass http://127.0.0.1:10000//testproxy01/;
}
则访问 http://ip/testproxy01/aaa,实际访问的是http://127.0.0.1:10000/testproxy01//aaa(代理后出现的是双//)
则访问 http://ip/testproxy01aaa,实际访问的是http://127.0.0.1:10000/testproxy01/aaa
4、 当 location 尾部没有 /,代理地址尾部没有 / 时:(常用)
location /testproxy00 {
proxy_pass http://127.0.0.1:10000/testproxy00;
}
则访问 http://ip/testproxy00/aaa,实际访问的是http://127.0.0.1:10000/testproxy00/aaa
访问 http://ip/testproxy00aaa,实际访问的是http://127.0.0.1:10000/testproxy00aaa
三、下面是关于代理地址后缀与location不同时的映射(常用)
这是四种不同的配置
location /testproxync11/ {
proxy_pass http://127.0.0.1:10000/testproxy/;
}
location /testproxync10/ {
proxy_pass http://127.0.0.1:10000/testproxy;
}
location /testproxync00 {
proxy_pass http://127.0.0.1:10000/testproxy;
}
location /testproxync01 {
proxy_pass http://127.0.0.1:10000/testproxy/;
}
上面四种配置分别按照不同方式访问后会是下面的结果
request: "GET /testproxync11/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxy/aaa"
request: "GET /testproxync10/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxyaaa"
request: "GET /testproxync00/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxy/aaa"
request: "GET /testproxync00aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxyaaa"
request: "GET /testproxync01aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxy/aaa"
request: "GET /testproxync01/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxy//aaa"
四、下面是关于代理地址无自定义后缀时的映射(常用)
location /testproxynp11/ {
proxy_pass http://127.0.0.1:10000/;
}
location /testproxynp10/ {
proxy_pass http://127.0.0.1:10000;
}
location /testproxynp00 {
proxy_pass http://127.0.0.1:10000;
}
location /testproxynp01 {
proxy_pass http://127.0.0.1:10000/;
}
上面四种配置分别按照不同方式访问后会是下面的结果
request: "GET /testproxynp10/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxynp10/aaa"
request: "GET /testproxynp11/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/aaa"
request: "GET /testproxynp01/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000//aaa"
request: "GET /testproxynp01aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/aaa"
request: "GET /testproxynp00aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxynp00aaa"
request: "GET /testproxynp00/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxynp00/aaa"