当前位置: 首页 > article >正文

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"

总结

声明:

后缀:/最后的斜杠

11:location有后缀且proxy_pass也有后缀

00:location无后缀且proxy_pass也无后缀

根据以上描述、论证以及平时的工作经历,可以发现,对于10和01两种类型平时慎用,这两种不好把握,也不符合常规,平时若想要代理路径,请选择使用11和00的方式
使用11时,会自动截取掉location上的路径,讲后面的路径映射到代理地址中;
使用00时,会自动将location路径中的所有路径平移到代理地址中,比如平时想要通过/aaa代理到 /aaab、 /aaac、/aaad这种,就可以直接使用/aaa一个location映射即可

http://www.kler.cn/a/231358.html

相关文章:

  • [JavaWeb]微头条项目
  • hhdb数据库介绍(9-24)
  • VSCode自定义插件创建教程
  • android 使用MediaPlayer实现音乐播放--权限请求
  • 如何将几个音频合成一个音频?非常简单的几种合成方法
  • 【GPTs】Ai-Ming:AI命理助手,个人运势与未来发展剖析
  • 人工智能福利站,初识人工智能,图神经网络学习,第四课
  • Spring Cloud使用ZooKeeper作为注册中心的示例
  • postman执行批量测试
  • step导入到solidworks外观处理方法
  • 图数据库 之 Neo4j - 环境搭建(2)
  • Android Button background 失效
  • 最新GPT4.0使用教程,AI绘画,GPT语音对话使用,DALL-E3文生图
  • UniApp 快速上手与深度学习指南
  • CloudStack中控制台虚拟机调试
  • 7.electron之渲染线程发送事件,主进程监听事件
  • C++中的作用域
  • 音视频色彩:RGB/YUV
  • 【RT-DETR有效改进】计算训练好权重文件对应的FPS、推理每张图片的平均时间(科研必备)
  • 2024-02-04 混用 C 与 C++ 的 calloc 和 new 导致的问题
  • Vscode SSH使用云服务器访问内网主机
  • 10个简单有效的编辑PDF文件工具分享
  • Camunda流程引擎数据库架构
  • Dockerfile里的ENTRYPOINT和CMD
  • 如何写一个其他人可以使用的GitHub Action
  • 基于全连接神经网络模型的手写数字识别