nginx之proxy_pass 易踩坑之处

2024-03-08 10:10
文章标签 nginx pass proxy 之处

本文主要是介绍nginx之proxy_pass 易踩坑之处,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天在学习nginx时碰到一个容易踩坑的地方,特意总结一下:

在proxy_pass中配置代理地址 总体分为两类  

        1.末尾是否以 / 结尾;

        2.代理地址中是否包含路径;

        下面用4种情况来一一验证,访问路径为 http://localhost:8085/ngix/b.html。

验证前准备:

        1. tomcat访问路径127.0.0.1:8080     (下图是tomcat下ngix项目)

        2. nginx访问路径127.0.0.1:8085

  1  proxy_pass中不包含路径

           1.1 斜杠(/)结尾

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

          

         地址栏中之所以写成http://localhost:8085/ngix/ngix/b.html,  是因为在nginx代理中不会将匹配上的路径带到请求中,nginx代理实际请求是http://127.0.0.1:8080/b.html,所以需要补上ngix路径,才能访问到tomcat下的ngix项目。

         结论:以 / 结尾,在代理请求中不会携带location匹配的内容,nginx代理到 http://127.0.0.1:8080/ngix/b.html(proxy_pass + 匹配localtion  路径后的内容)。

           1.2 结尾无斜杠(/)

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

           

           结论:结尾无 / ,在代理请求中会携带location匹配的内容,nginx代理到 http://127.0.0.1:8080/ngix/b.html(proxy_pass + 匹配localtion路径的内容   或   将proxy_pass中的IP和端口  替换到  url中的IP和端口)

2  proxy_pass中包含路径

           2.1 斜杠(/)结尾

            location /ngix/ {
               proxy_pass   http://127.0.0.1:8080/ngix/a/;
           }

           

结论:nginx代理到 http://127.0.0.1:8080/ngix/a/b.html(proxy_pass + 匹配localtion路径后的内容)

           2.2 结尾无斜杠(/)

           location /ngix/ {
             proxy_pass   http://127.0.0.1:8080/ngix/a;
          }

          

结论:代理到 http://127.0.0.1:8080/ngix/ab.html(proxy_pass + 匹配localtion路径后的内容),不会在路径上补全斜杠(/)

总结:

        1)在proxy_pass中以斜杠(/)结尾(有无路径都行),nginx代理请求不会携带localhost匹配的路径。(proxy_pass + 匹配localtion路径后的内容)

        2)在proxy_pass中路径且末尾没有斜杠(/),nginx代理请求中会携带location匹配的路径。(proxy_pass + 匹配localtion路径的内容   或   将proxy_pass中的IP和端口  替换到  url中的IP和端口)

        3)在proxy_pass中路径且末尾没有斜杠(/),nginx代理请求中会携带location匹配的路径。(proxy_pass + 匹配localtion路径后的内容)

    建议在配置nginx代理中,proxy_pass中最好不要添加路径

这篇关于nginx之proxy_pass 易踩坑之处的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/786769

相关文章

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

nginx-rtmp-module模块实现视频点播的示例代码

《nginx-rtmp-module模块实现视频点播的示例代码》本文主要介绍了nginx-rtmp-module模块实现视频点播,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录预置条件Nginx点播基本配置点播远程文件指定多个播放位置参考预置条件配置点播服务器 192.

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

一文带你搞懂Nginx中的配置文件

《一文带你搞懂Nginx中的配置文件》Nginx(发音为“engine-x”)是一款高性能的Web服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中,下面就跟随小编一起来了解下如何... 目录摘要一、Nginx 配置文件结构概述二、全局配置(Global Configuration)1. w

若依部署Nginx和Tomcat全过程

《若依部署Nginx和Tomcat全过程》文章总结了两种部署方法:Nginx部署和Tomcat部署,Nginx部署包括打包、将dist文件拉到指定目录、配置nginx.conf等步骤,Tomcat部署... 目录Nginx部署后端部署Tomcat部署出现问题:点击刷新404总结Nginx部署第一步:打包