Nginx快速入门:nginx各类转发、代理配置详解|location

Nginx快速入门:nginx各类转发、代理配置详解|location

码农世界 2024-05-17 后端 74 次浏览 0个评论

我们上述讲解了匹配模式的书写,匹配到了还要进行合理的转发,而转发模式的控制就是通过proxy_pass, 下面我们来看看proxy_pass的语法结构

2.1 proxy_pass 的四种配置写法

首先我们来回顾下proxy_pass的语法:

 proxy_pass url;

转发地址url分为带/和不带/,带杠的为绝对根路径,会直接在路径后拼接上不带匹配路径的转发地址;如果没有杠表示相对路径,则会将匹配路径也带上进行转发,我们举例说明:

location /user/ {
    proxy_pass url;
}

访问路径固定为:http://192.168.244.21/user/index.html

  • 1、当proxy_pass http://192.168.244.21:8080/ 时

    会跳转至http://192.168.244.21:8080/index.html,带/表示绝对路径,匹配路径/user/会被消除

    • 2、当proxy_pass http://192.168.244.21:8080 时

      会跳转至http://192.168.244.21:8080/user/index.html,相对路径,匹配路径/user/不会被消除

      • 3、当proxy_pass http://192.168.244.21:8080/admin/ 时

        会跳转至http://192.168.244.21:8080/admin/index.html,匹配路径/user/被消除,并且保留转发路径里的/admin/

        • 4、当proxy_pass http://192.168.244.21:8080/admin 时

          会跳转至http://192.168.244.21:8080/adminindex.html,因为proxy_pass中也包含了/了,表示绝对路径,所以/user/会被消除

          总言之记住一点,带/表示绝对路径,请求路径中的匹配路径(location)转发时会被消除

          2.2 server和location模块中proxy_pass的区别

          在server模块中的proxy_pass只需要配置ip(或域名)和端口,相当于端口转发;而在location中的proxy_pass,也就是我们更加常用的,可以配置域名、ip、端口、uri,此外还需要提供协议:http或https,相当于地址转发。

          配置语法如下:

          server {
              listen 80;
              proxy_responses 1;
              proxy_timeout 20s;
              proxy_pass xxx.com:8080;
              # proxy_pass 192.168.244.21:8080;
          	
          	location /user/ {
                  proxy_pass http://192.168.244.21:8081;
              }
          }
          

          3. location匹配案例练习

          • 1、匹配匹配以.jsp结尾的路径,将其转发至端口为8080的tomcat服务

            解析:要匹配以.jsp结尾,只需要默认写上.jsp即可,但是需要注意.是单一字符通配符,所以要添加\做转义,才能表示成本身点的含义

            server {
                listen 81;
                location ~ (.*)\.jsp {
                   proxy_pass http://localhost:8080;
                   proxy_set_header HOST $host;
                   proxy_http_version 1.1;
                }
            }
            

            测试:

            访问ip:81/index.jsp,可以看到成功转发到8080端口的tomcat了(这里提前修改了首页,将端口显示在tomcat首页了)

            Nginx快速入门:nginx各类转发、代理配置详解|location

            去除点号访问,发现访问不通了,测试通过

            Nginx快速入门:nginx各类转发、代理配置详解|location

            • 2、三台不同的tomcat,端口分别为8080,8081,8083,分别承担不同的业务,将路径以/user开头的请求转发至tomcat 8080, 以/order开头的转发至tomcat 8081, 路径包含/product跳转到tomcat 8083的首页

              解析:

              该需求实际上一共有两部分,/user,/order的配置都类似,我们使用^~即可,只有8083的需要用到的是跳转,也就是重定向到tomcat 8083首页,这里需要用到return,大家暂时知道即可,下一章我们详细讲解重定向的配置。

              server {
                  listen 81;
                  location ^~ /user {
                     proxy_pass http://localhost:8080/;
              **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
              **深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
              **因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
              ![img](https://img-blog.csdnimg.cn/img_convert/abf9c698799da2647aa182d23084078c.png)
              ![img](https://img-blog.csdnimg.cn/img_convert/9075be446afbb0aaeee234df9d6ea06e.png)
              ![img](https://img-blog.csdnimg.cn/img_convert/6859905066e660c76d98865b68e6cb55.png)
              ![img](https://img-blog.csdnimg.cn/img_convert/7d9df0b58298a43e6387bfdd2277afc8.png)
              ![img](https://img-blog.csdnimg.cn/img_convert/020006391d6e9d29b2e3600f9af4a618.png)
              **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!**
              **由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
              **如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)**
              ![img](https://img-blog.csdnimg.cn/img_convert/e3e93d7da1e98b0d1f134fc8550c65d7.jpeg)
              为了做好运维面试路上的助攻手,特整理了上百道 **【运维技术栈面试题集锦】** ,让你面试不慌心不跳,高薪offer怀里抱!
              这次整理的面试题,**小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。**
              ![](https://img-blog.csdnimg.cn/img_convert/4b0d9bcf9445ad8c4dcbf43f2ae3407b.png)
              本份面试集锦涵盖了
              *   **174 道运维工程师面试题**
              *   **128道k8s面试题**
              *   **108道shell脚本面试题**
              *   **200道Linux面试题**
              *   **51道docker面试题**
              *   **35道Jenkis面试题**
              *   **78道MongoDB面试题**
              *   **17道ansible面试题**
              *   **60道dubbo面试题**
              *   **53道kafka面试**
              *   **18道mysql面试题**
              *   **40道nginx面试题**
              *   **77道redis面试题**
              *   **28道zookeeper**
              **总计 1000+ 道面试题, 内容 又全含金量又高**
              *   **174道运维工程师面试题**
              > 1、什么是运维?
              > 2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
              > 3、现在给你三百台服务器,你怎么对他们进行管理?
              > 4、简述raid0 raid1raid5二种工作模式的工作原理及特点
              > 5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
              > 6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
              > 7、Tomcat和Resin有什么区别,工作中你怎么选择?
              > 8、什么是中间件?什么是jdk?
              > 9、讲述一下Tomcat8005、8009、8080三个端口的含义?
              > 10、什么叫CDN?
              > 11、什么叫网站灰度发布?
              > 12、简述DNS进行域名解析的过程?
              > 13、RabbitMQ是什么东西?
              > 14、讲一下Keepalived的工作原理?
              > 15、讲述一下LVS三种模式的工作过程?
              > 16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
              > 17、如何重置mysql root密码?
              [**一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
              **AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**
              t/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
              **AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**
              

转载请注明来自码农世界,本文标题:《Nginx快速入门:nginx各类转发、代理配置详解|location》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,74人围观)参与讨论

还没有评论,来说两句吧...

Top