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 location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

详解nginx 中location和 proxy_pass的匹配规则

《详解nginx中location和proxy_pass的匹配规则》location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如... 目录location 的作用语法示例:location /www.chinasem.cntestproxy

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

Nginx配置location+rewrite实现隐性域名配置

《Nginx配置location+rewrite实现隐性域名配置》本文主要介绍了Nginx配置location+rewrite实现隐性域名配置,包括基于根目录、条件和反向代理+rewrite配置的隐性... 目录1、配置基于根目录的隐性域名(就是nginx反向代理)2、配置基于条件的隐性域名2.1、基于条件

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配