Nginx代理中使用斜杠的区别小结

 更新时间:2023年09月15日 16:26:04   作者:你邻座的怪同学  
在使用nginx代理的过程中,斜线是一个非常重要的符号,因为它涉及到了请求路径的匹配问题,本文主要介绍了Nginx代理中使用斜杠的区别小结,感兴趣的可以了解一下

代理地址是:http://127.0.0.1:8000

总结:代理地址加斜杠替换,代理地址不加斜杠拼接

1、代理地址不加斜杠

# 请求路径为:http://127.0.0.1:8080/api/getInfo  
# 实际代理为:http://127.0.0.1:8000/api/getInfo
location ^~/api/ {
  proxy_pass http://127.0.0.1:8000;
  proxy_set_header Host $http_host; 
  proxy_set_header X-Real-IP $remote_addr; 
}
# 请求路径为:http://127.0.0.1:8080/api/getInfo
# 实际指向为:http://127.0.0.1:8000/api/getInfo
location ^~/api {
  proxy_pass http://127.0.0.1:8000;
  proxy_set_header Host $http_host; 
  proxy_set_header X-Real-IP $remote_addr; 
}

location定位的路径设置,是否带斜杠,没有关系。

2、代理地址 + 斜杠

# 请求路径为:http://127.0.0.1:8080/api/getInfo
# 实际代理为:http://127.0.0.1:8000/getInfo
location ^~/api/ {
  proxy_pass http://127.0.0.1:8000/;
  proxy_set_header Host $http_host; 
  proxy_set_header X-Real-IP $remote_addr; 
}
# 请求路径为:http://127.0.0.1:8080/api/getInfo
# 实际代理为:http://127.0.0.1:8000//getInfo
location ^~/api {
  proxy_pass http://127.0.0.1:8000/;
  proxy_set_header Host $http_host; 
  proxy_set_header X-Real-IP $remote_addr; 
}

如果代理地址加了斜杠,不管location是否加斜杠,api路径都省略了。

3、代理地址 + 后缀

# 请求路径为:http://127.0.0.1:8080/api/getInfo
# 实际代理为:http://127.0.0.1:8000/wxgetInfo
location ^~/api/ {
  proxy_pass http://127.0.0.1:8000/wx;
  proxy_set_header Host $http_host; 
  proxy_set_header X-Real-IP $remote_addr; 
}
# 请求路径为:http://127.0.0.1:8080/api/getInfo
# 实际代理为:http://127.0.0.1:8000/wx/getInfo
location ^~/api {
  proxy_pass http://127.0.0.1:8000/wx;
  proxy_set_header Host $http_host; 
  proxy_set_header X-Real-IP $remote_addr; 
}

如果location带斜杠,会省略url中的斜杠。

4、代理地址 + 后缀 + 斜杠

# 请求路径为:http://127.0.0.1:8080/api/getInfo
# 实际代理为:http://127.0.0.1:8000/wx/getInfo
location ^~/api/ {
  proxy_pass http://127.0.0.1:8000/wx/;
  proxy_set_header Host $http_host; 
  proxy_set_header X-Real-IP $remote_addr; 
}
# 请求路径为:http://127.0.0.1:8080/api/getInfo
# 实际代理为:http://127.0.0.1:8000/wx//getInfo
location ^~/api {
  proxy_pass http://127.0.0.1:8000/wx/;
  proxy_set_header Host $http_host; 
  proxy_set_header X-Real-IP $remote_addr; 
}

其他

精确匹配:server_name www.test.com ;
左侧通配:server_name *.test.com ;
右侧统配:server_name www.test.* ;
正则匹配:server_name ~^www\.test\.*$ ;

匹配优先级:精确匹配 > 左侧通配符匹配 > 右侧通配符匹配 > 正则表达式匹配

#直接返回状态码
location / { 
   return 404;
}
#返回状态码 + 一段文本
location / { 
   return 404 "pages not found"; 
}
#返回状态码 + 重定向地址
location / { 
   return 302 /blog ; 
}
#返回重定向地址
location / { 
   return https://www.test.com ; 
}
# http强制跳转到https
server {
  listen 80;
  server_name test.com;    
  rewrite ^(.*)$ https://$server_name$1 permanent;
}

 到此这篇关于Nginx代理中使用斜杠的区别小结的文章就介绍到这了,更多相关Nginx代理斜杠内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

最新评论