Nginx 中 location 和 proxy_pass 的斜杠问题

news2024/12/23 19:21:07

location 的斜杠问题比较好理解,不带斜杠的是模糊匹配。例如:

location /doc

  • 可以匹配 /doc/index.html,也可以匹配 /docs/index.html。

location /doc/     强烈建议使用这种

  • 只能匹配 /doc/index.html,不能匹配 /docs/index.html。

  对于 proxy_pass 的斜杠问题,得结合 location 来讲。 

(1)proxy_pass 不带URL方式


 这种 IP、端口后面没有 /,是不带 URI 的方式nginx 会保留 location 中的路径。所以,访问 http://127.0.0.1/docs/,实际上访问的是 http://127.0.0.1:8080/docs/。

location /docs/ {
    proxy_pass http://127.0.0.1:8080;
}

        location /jenkins/ {
            proxy_set_header host $host;
            proxy_pass http://192.168.11.128:8080;
         }

tomcat日志
192.168.11.128 - - [04/Jun/2023:07:50:59 +0800] "GET /jenkins/index.html HTTP/1.0" 404 648

        location /article/ {
            proxy_set_header host $host;
            proxy_pass http://192.168.11.128:8080/;
         }


tomcat日志  192.168.11.128 - - [04/Jun/2023:14:12:06 +0800] "GET / HTTP/1.0" 200 10582

 

(2)proxy_pass 带 URI 的方式


这种 IP、端口后面有 /,是带 URI 的方式nginx 将会使用别名的方式来对 URL 进行替换。所以,访问 http://127.0.0.1/docs/,实际上访问的是 http://127.0.0.1:8080/,/docs/ 替换成了 /。

location /docs/ {
    proxy_pass http://127.0.0.1:8080/;
}
        location /article/ {
            proxy_set_header host $host;
            proxy_pass http://192.168.11.128:8080/;
         }

后端tomcat日志

192.168.11.128 - - [04/Jun/2023:08:08:56 +0800] "GET /index.html HTTP/1.0" 404 648

 对带 URI 的方式进行扩展:

location /article/ {
    proxy_pass http://127.0.0.1:8080/docs/;
}

这种同样 IP、端口后面有 /,也是带 URI 的方式。所以,访问 http://127.0.0.1/article/,实际上访问的是 http://127.0.0.1:8080/docs/,/article/ 替换成了 /docs/。 

 举例如下:

        location /article/ {
            proxy_set_header host $host;
            proxy_pass http://192.168.11.128:8080/docs/;
         }

192.168.11.128 - - [04/Jun/2023:08:00:26 +0800] "GET /docs/index.html HTTP/1.0" 404 648

 

 经常出错的也正是这种带 URI 方式的写法 !!!!!


例如:

location /article/ {
    proxy_pass http://127.0.0.1:8080/docs;
}

当访问 http://127.0.0.1/article/index.html 的时候,本意是想访问 http://127.0.0.1:8080/docs/index.html。但是,/article/ 替换成了 /docs,所以,实际访问的是 http://127.0.0.1:8080/docsindex.html。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1000232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SSM的班主任助理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Linux 编译安装中的 configure 命令

用了这么久的 Linux 系统,也许你会发现,在编译安装中,有的服务编译安装需要执行 configure 命令,而有的却不需要,这是为什么呢?也是不是像我一样一头雾水呢?其实这取决于服务的构建系统和配置方…

k8skubectl陈述式及声明式资源管理

k8s:kubectl陈述式及声明式资源管理 一、陈述式资源管理方法1.陈述式资源管理概念2.基本信息查看(1)查看版本信息(2)查看资源对象简写(3)查看集群信息(4)配置kubectl自动补全&#x…

搭建个人博客系统

效果图: 博客网址: 行秋http://8.137.35.5:8093/#/Home源码链接: QiuShicheng/Qiu-blog (github.com)https://github.com/QiuShicheng/Qiu-blog 视频参考: B站最通俗易懂手把手SpringBootVue项目实战-前后端分离博客项目-Java…

数据结构基础6:二叉树的实现和堆。

二叉树的概念和应用: 一.树的概念和结构:一.树的概念和结构:1.树的概念:2.树的相关概念:3.树的表示: 二.二叉树的概念和结构:1.概念:2.两种特殊的二叉树:1.完全二叉树&am…

一个CVE漏洞预警知识库

CVE 0x01 免责声明 本仓库所涉及的技术、思路和工具仅供安全技术研究,任何人不得将其用于非授权渗透测试,不得将其用于非法用途和盈利,否则后果自行承担。 无exp/poc,部分包含修复方案 0x02 项目导航 2022.12 CVE-2022-3328&a…

管理类联考——数学——汇总篇——知识点突破——应用题——工程

⛲️ 工程问题为常考题型,命题频率相对较高,题型难度属于中等,核心在于效率的有关计算。 1.工作量s、工作效率v、工作时间t三者的关系: 工作量 工作效率 工作时间( s v t ) 工作量工作效率工作时间&am…

第一章 数据库SQL-Server(及安装管理详细)

❄️作者介绍:奇妙的大歪❄️ 🎀个人名言:但行前路,不负韶华!🎀 🐽个人简介:云计算网络运维专业人员🐽 前言 21 世纪,人类迈入了“信息爆炸时代”&#xff0c…

Java计算机毕业设计基于SpringBoot音乐网项目(附源码讲解)

目录 用户端 第一步:用户注册 第二步:用户登录 第三步:平台首页(可查看平台歌单、歌手详细信息操作等等) 第四步:查看歌单 第五步:歌单详情操作(歌单评价、歌单歌曲下载、歌单…

2021-2023顶会190+篇ViT高分论文总结(通用ViT、高效ViT、训练transformer、卷积transformer等)

今天分享近三年(2021-2023)各大顶会中的视觉Transformer论文,有190篇,涵盖通用ViT、高效ViT、训练transformer、卷积transformer等细分领域。 全部论文原文及开源代码文末直接领取 General Vision Transformer(通用V…

Asp.Net 6.0集成 Log4Net

环境 需要安装NuGet包&#xff0c;明细如下&#xff1a; log4netMicrosoft.Extensions.Logging.Log4Net.AspNetCore 配置文件 文件名称 log4net.config&#xff0c;默认可以放在与启动类Program.cs同级目录下 <?xml version"1.0" encoding"utf-8"…

腾讯云服务器无法使用 xftp 上传文件

现象&#xff1a;xftp 连接腾讯云服务器后不能在可视化界面创建文件&#xff0c;也不能上传文件 解决办法&#xff1a; 一、防火墙开放 21 端口 二、使用 xshell 登陆云服务器&#xff0c;默认登陆为 ubuntu 用户&#xff0c;需要切到 root&#xff0c;只有 root 用户才有 FTP…

kubernetes-operator开发教程(基于kubebuilder脚手架)

1、Operator介绍 Operator是什么&#xff1f; Kubernetes Operator是一个自定义控制器&#xff0c;用于通过自动化操作来管理复杂应用或服务。 实现原理是什么&#xff1f; Kubernetes Operator的实现原理基于自定义控制器&#xff08;Controller&#xff09;和自定义资源定义…

conda常用命令及问题解决-创建虚拟环境

好久没写博文了&#xff0c;感觉在学习的过程中还是要注意积累与分享&#xff0c;这样利人利己。 conda包清理&#xff0c;许多无用的包是很占用空间的 conda clean -p //删除没有用的包 conda clean -y -all //删除pkgs目录下所有的无用安装包及cacheconda创建虚拟环境…

机器学习入门教学——标签编码、序号编码、独热编码

1、前言 在机器学习过程中&#xff0c;我们经常需要对特征进行分类&#xff0c;例如&#xff1a;性别有男、女&#xff0c;国籍有中国、英国、美国等&#xff0c;种族有黄、白、黑。 但是分类器并不能直接对字符型数据进行分类&#xff0c;所以我们需要先对数据进行处理。如果…

索引失效有哪些?

在工作中&#xff0c;如果我们想要提高一条语句的查询速度&#xff0c;通常都会想对字段建立索引。 但是索引不是万能的。建立了索引&#xff0c;并不意味着任何查询语句都能走索引扫描。 稍不注意&#xff0c;可能查询语句就会导致索引失效&#xff0c;从而走了全表扫描&…

美业创新之路:广告电商模式让你的品牌脱颖而出

美业是一个巨大的市场&#xff0c;但也面临着激烈的竞争和消费者的多样化需求。如何在这个市场中脱颖而出&#xff0c;实现品牌的增长和盈利呢&#xff1f;答案就是广告电商模式。 广告电商模式是一种结合了社交电商和广告分佣的新型电商模式&#xff0c;它可以让消费者在购物的…

几种研发管理流程

一、CMMI 1.初始阶段 软件过程混乱&#xff0c;有时甚至混乱。几乎没有流程的定义。成功取决于个人的努力。管理是被动的。 2.可重复/可管理 建立了基本的项目管理流程来跟踪成本&#xff0c;进度和功能特征。已经建立了必要的过程规程&#xff0c;以便能够重复先前类似应用…

RPC框架核心技术

一、RPC框架整体架构 RPC Client && RPC Server RPC Client 1、动态代理&#xff0c;根据lookUp信息&#xff08;接口-实现-方法&#xff09;动态创建出代理类&#xff0c;&#xff08;创建代理类RPC服务端的目标接口&#xff09;。即Lookup为远端目标接口地址&#…

localStorage是什么?有哪些特点?

localStorage的主要作用是本地存储&#xff0c;它可以将数据按照键值对的方式保存在浏览器中&#xff0c;直到用户或者脚本主动清除数据&#xff0c;否则该数据会一直存在。也就是说&#xff0c;使用了本地存储的数据将被持久化保存。 localStorage与sessionStorage的区别是存…