主要是区分带斜杠与不带斜杠的情况
第一种情况
代理为【域名+端口】的方式。
访问地址为http://nginx-server:80/app/v1
// location中有 /
server {
listen 443 ssl;
location /app/ {
proxy_pass http://server1:8191;
}
}
反向代理路径:http://server1:8191/app/v1
// location中无 /
server {
listen 443 ssl;
location /app {
proxy_pass http://server1:8191;
}
}
反向代理路径:http://server1:8191/app/v1
理解:域名+端口的方式只要location匹配上了,就把原地址的【ip+端口】使用代理的【ip+端口】替换即可。
第二种情况
代理为【域名+端口+/】的方式
访问路径 http://nginx-server:80/app/v1
server {
listen 443 ssl;
location /app/ {
proxy_pass http://server1:8191/;
}
}
反向代理路径:http://server1:8191/v1
。
理解:原访问地址中直接把location后面匹配到的字符【/app/】拿掉,剩下的拼接到代理路径即可,也就是把【v1】拼接过来得到http://server1:8191/v1
server {
listen 443 ssl;
location /app {
proxy_pass http://server1:8191/;
}
}
反向代理路径:http://server1:8191//v1
。
理解:原访问地址中直接把location后面匹配到的字符【/app】拿掉,剩下的拼接到代理路径即可,也就是把【/v1】拼接过来得到http://server1:8191//v1
第三种情况
代理为【域名+端口+路径】的方式
访问路径 http://nginx-server:80/app/v1
server {
listen 443 ssl;
location /app/ {
proxy_pass http://server1:8191/app/v2;
}
}
反向代理路径:http://server1:8191/app/v2v1
。
理解:原访问地址中直接把location后面匹配到的字符【/app/】拿掉,剩下的拼接到代理路径即可,也就是【v1】拼接过来得到http://server1:8191/app/v2v1
server {
listen 443 ssl;
location /app {
proxy_pass http://server1:8191/app/v2;
}
}
反向代理路径:http://server1:8191/app/v2/v1
。
理解:原访问地址中直接把location后面匹配到的字符【/app】拿掉,剩下的拼接到代理路径即可,也就是【/v1】拼接过来得到http://server1:8191/app/v2/v1