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

面试秘籍Java 2024-06-20 11:07:05 阅读 79

我们上述讲解了匹配模式的书写,匹配到了还要进行合理的转发,而转发模式的控制就是通过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首页了)

在这里插入图片描述

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

在这里插入图片描述

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、安卓逆向、云计算**



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。