总目录👉一文带你轻松加愉快入门Linux
🚴大家好!我是近视的脚踏实地,这篇文章主要是学习Nginx反向代理
唯有行动 才能解除你所有的不安
Nginx反向代理
1.什么是反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
首先我们先理解正向代理,如下图:
(在生活中我们都是直接把正向代理称作代理,称为代理就行了,正向两个字就去掉了,那么这个代理也很好理解,举个例子,比如说现在在教室里边,各位同学上不了网,只有老师的那台机器可以上网,那么现在学生们又想去访问外网要怎么半呢,那么老师这个机器就可以作为一个代理服务器,只需要在学生电脑上去配置这个代理服务器的IP地址接可以了。
配好了之后,将来学生在浏览器里输入对应的网址,其实呢,就是把这个请求发给了代理服务器,然后再由代理服务器去上网,上完网之后,请求的资源再通过代理服务器返回给各位学生,这样就能够实现局域网内可以来连接互联网这种请求,那么其实正向代理代理的就是客户端)
正向代理是针对你的客户端,而反向代理是针对服务器的,如下图
(可以看到这个反向代理这个图刚好和代理那个图是相反的,那么反向代理其实就是,比如现在呢我有远程,想要去访问我的Tomcat的网站,比如说我想通过网络访问我部署在Linux系统中Tomcat这些网站,我直接访问也是可以的。
但是直接访问有这么两个问题,第一个问题就是,直接访问的话,如果访问量太大,就一台Tomcat的话,那么这样并发就太低了,所以我们希望搭建一个Tomcat的集群,那么搭完Tomcat的集群之后呢,我直接是去访问的话,我咋知道是访问1还是2还是3呢,所以我们做一个代理服务器,我所以的请求都打到,或者说都访问这个代理服务器,然后再由这个代理服务器给我分发这些请求到这些Tomcat1或者2或者3,这就是反向代理。
那么还有第二个原因,如果我通过互联网直接访问我服务器的一些资源的话,可能会不安全,所以呢如果用了反向代理服务器,我所有的资源请求都打到反向代理服务器上,然后呢,我可以在这个中间加上一个防火墙,或者压根把整个做成内网的,或者说局域网的,外网根本都访问不了,那么这样做就会显得更加安全一些,所以反向代理服务器代理的就是服务器端)
2.配置反向代理-准备工作
(要配置反向代理,我们就先得有个tomcat被代理吧)
那么我们先进入到tomcat的目录,然后进入到webapps的目录下,可以看到里边有很多的资源
那么我期望这个travel这个项目成为ROOT项目,那么先把当前里边资源都删了,然后待会重新去打了ROOT的包,再来上传
那么先去pom.xml文件修改finalName,打包名字改为ROOT,将来拿到Linux上一解压就叫ROOT了,那么叫ROOT有什么好处呢,那么就是将来不需要去输入项目名称访问了
然后点击打包命令打包👇:
然后把打好的包放到uoload目录下,稍后用rz命令来上传
然后在上传之前我们先使用 rm -rf ./* 命令,即删除且不询问当前目录下的所有资源,这个地方要格外小心,如果不写./当前目录,你就会将Linux系统里边的大部分资源全部删掉了,所以要注意
接着使用rz命令来上传👇:
接着就可以把Tomcat启动起来了
启动之后,打开浏览器访问,端口是8080没改,但是不用再输入项目了👇:
3 配置反向代理
那么上边是直接的访问,那么我想通过Nginx来做代理访问,那就需要来配置反向代理,那么其实配置方向代理也非常简单,无外乎是你将来访问Tomcat的任何请求,我们需要在反向代理里边转一圈,走这个Nginx走一圈就完事了
那么就要在Nginx主机修改 Nginx配置文件,首先是配置被代理服务器的IP和端口👇:
接着第二步,在你对应的Nginx server这个配置里边,把root注释掉,在里边写个proxy_pass http://tomcat-travel;后边这个名字是可以随便起的,然后每个配置都要分号不要忘记,接着就保存,这样反向代理就配置好了
那么将来访问的时候,只需要输入www.wzftravel.com这么一个域名接可以了,就是一输入www.wzftravel.com,他就会找代理proxy_pass,然后知道是走http://tomcat-travel;这么一个主机,然后就可以找到server 192.168.10.128:8080;这么一个IP和端口
那么我们启动Nginx来试一下
然后我们通过输入域名来访问👇:
那么它的执行原理其实就是如下图👇:
那么直接我们是直接从浏览器就访问到了tomcat,现在我们是在浏览器输入了www.wzftravel.com这个域名访问,那么当一个用户输入域名的去访问的时候,其实他是不知道他访问的nginx还是tomcat,那么因为我刚刚在配置文件配置了,所以知道他是访问了nginx,然后nginx就找到了server_name的配置,接下来他就会去解析对应的proxy_pass这么一串,然后就会找到后边tomcat-travel这一短路径,然后通过他去找到对应的你在上边配置的这个名字
找到了之后就可以找到对应的IP和端口,那么有了IP和端口之后,Nginx就可以去访问Tomcat了,访问完事之后呢,返回的资源就给了Nginx,Nginx再回给浏览器,这就是一个反向代理的过程
那么现在用户,通过浏览器输入完一个域名之后,我知不知道我访问的是谁,相当于这个反向代理服务器压根就把后边的所以请求的细节完全屏蔽掉了
下一篇👉负载均衡
本篇博客到这就完啦,非常感谢您的阅读🙏,如果对您有帮助,可以帮忙点个赞或者来波关注鼓励一下喔😬 ,嘿嘿👀