本文转自:乐字节文章主要讲解:Nginx反向代理和负载均衡获取更多Java相关资料,可以关注公众号《乐字节》发送:999代理 想要了解反向代理,首先要知道什么是正向代理。要了解正向代理,你只需要知道代理是什么。代理实际上是一个中介,一个链接,在不同的事物或同一事物内部起到中介作用。比如票黄牛、房屋中介等等。 在网络中,proxy更多指的是代理服务器。代理服务器位于客户端和服务器之间,充当两者之间的中介。这种代理在生活中比较常见。比如我们常说的科学上网使用代理技术。正向代理 正向代理(forwardproxy):它是客户端和目标服务器之间的服务器(代理服务器)。为了从目标服务器获取内容,客户端向代理服务器发送请求并指定目标。代理服务器再将请求转发给目标服务器,并将获取到的内容返回给客户端。 比如在国内直接访问谷歌是不行的。我们可以通过一个可以访问谷歌的正向代理服务器向代理服务器发送请求,代理会去谷歌获取数据并返回。要求。 一句话总结:正向代理就是代理服务器作为客户端与目标服务器进行交互的代理。 正向代理的目的:突破IP访问限制,通过缓存加速资源访问,隐藏客户端真实IP,客户端访问授权proxy中的代理服务器,proxy是服务器端。代理服务器接收到客户端的请求,然后将请求转发给内网的服务器,并将从服务器得到的结果返回给客户端。此时代理服务器对外充当反向代理服务器。 反向代理服务器位于用户和目标服务器之间,但是对于用户来说,反向代理服务器就相当于目标服务器,即用户可以直接访问反向代理服务器获取资源目标服务器。同时,用户不需要知道目标服务器的地址,也不需要在客户端做任何设置。 一句话总结:反向代理就是代理服务器作为目标服务器的代理,与客户端进行交互。 反向代理的目的:隐藏服务器的真实IP。负载平衡通过缓存提供安全性以加速对资源的访问。负载均衡 在实际生产环境中,反向代理服务器的目标服务器可能不止一台。比如一个开发的应用部署在Tomcat服务器上,而Tomcat的并发限制没有优化,默认只有200左右,这时候为了解决高并发的问题,只能选择更换服务器或搭建多个服务器通过反向代理和负载均衡技术解决并发问题。 负载均衡(LoadBalance)是由多台服务器以对称方式组成的服务器集群。每台服务器的地位相当,可以独立对外提供服务,无需其他服务器的辅助。通过某种负载分担技术,将来自外部的中心请求以对称结构平均分配到某台服务器上。总结 正向代理是指代理服务器作为客户端与目标服务器进行交互的代理。现实生活中的场景:黄牛买票。 反向代理是指代理服务器作为目标服务器的代理,与客户端进行交互。一个真实的场景:房屋中介。Nginx反向代理和负载均衡 前面我们提到搭建多台服务器,使用反向代理和负载均衡技术可以解决并发问题,那么负载均衡的实现从何而来呢?为了避免重新发明轮子,我们选择现成的成熟工具来帮助我们完成这项工作。Nginx是一个不错的选择。 Nginx由IgorSysoev开发,用于俄罗斯访问量第二大的https://www.rambler.ru/网站。Nginx是一个高性能的HTTP和反向代理服务器,可以承受5W左右的并发量。Ngnix一方面可以作为反向代理服务器,另一方面也可以作为静态资源服务器。本文主要学习如何使用Nginx实现反向代理和负载均衡。官网:http://nginx.org/Environment三台CentOS7.8.2003机器192.168.10.101安装Nginx1.18.0192.168.10.102和192.168.10.103安装Tomcat9.0.38安装Nginx下载资源 并下载Nginx解压缩。#下载nginx压缩包wget-P/usr/local/srchttp://nginx.org/download/nginx-1.18.0.tar.gz#解压tar-zxvf/usr/local/src/nginx-1.18.0.tar.gz-C/usr/local/src安装依赖 Nginx是基于C语言开发的,HTTP模块使用pcre解析正则表达式,可以使用zlib对HTTP包内容进行gzip,Nginx不仅支持HTTP协议,还支持HTTPS。HTTPS需要openssl提供支持,所以在安装Nginx之前必须先安装好它所依赖的环境。yuminstall-ygccgcc-c++pcrepcre-develzlibzlib-developenssl-develinstallNginx 编译安装。#切换到nginx的解压目录cd/usr/local/src/nginx-1.18.0#创建nginx的安装目录mkdir-p/usr/local/nginx#指定nginx的安装路径./configure--prefix=/usr/local/nginx/#编译安装make&&makeinstall常用命令 Nginx运行时默认加载的配置文件为nginx.conf,根据不同的安装方式存放位置不同。yum的安装方式会存放在/etc/nginx/nginx.conf,本文的安装方式会存放在/usr/local/nginx/conf/nginx.conf。help#切换目录cd/usr/local/nginx#Help[root@localhostnginx]#sbin/nginx-hnginxversion:nginx/1.18.0Usage:nginx[-?hvVtTq][-ssignal][-cfilename][-pprefix][-gdirectives]Options:-?,-h:thishelp-v:showversionandexit-V:showversionandconfigureoptionsthenexit-t:testconfigurationandexit-T:测试配置,dump它并退出-q:在配置测试期间抑制非错误消息-s信号:向主进程发送信号:停止、退出、重新打开、重新加载-p前缀:设置前缀路径(默认:/usr/local/nginx//)-cfilename:设置配置文件(默认:conf/nginx.conf)-gdirectives:设置配置文件外的全局指令查看版本#查看版本[root@localhostnginx]#sbin/nginx-vnginxversion:nginx/1.18.0#查看版本和配置选项[root@localhostnginx]#sbin/nginx-Vnginxversion:nginx/1.18.0builtbygcc4.8.520150623(RedHat4.8.5-39)(GCC)confiGurearguments:--prefix=/usr/local/nginx/checkconfiguration#检测配置文件是否有语法错误,默认检测conf/nginx.conf[root@localhostnginx]#sbin/nginx-t-c/usr/local/nginx/conf/nginx.confnginx:配置文件/usr/local/nginx/conf/nginx.conf语法是oknginx:配置文件/usr/local/nginx/conf/nginx.conf测试成功startup#start并通过-c指定启动时加载的配置文件,默认加载conf/nginx.confsbin/nginx-c/usr/local/nginx/conf/nginx.confrestart#平滑重启,重新加载配置sbin/nginx-sreloadstop#快速停止sbin/nginx-sstop#完整有序停止sbin/nginx-squitlogcutting#重新打开日志文件(logcutting)sbin/nginx-sreopen 比如我们设置Nginx上所有网站的访问日志都保存在一个文件中,所以日积月累累积所有网站的访问记录会使日志文件越来越大,需要查看日志文件时会变得很麻烦。如果将每天的日志文件分开并标上相应的日期,查看日志的操作就会变得非常友好。 日志切割的实现过程如下:将原文件移动到新的文件目录下。实际上,此时Nginx会继续往文件中写入日志。执行nginx-sreopen打开一个新的日志文件,Nginx会将新的日志信息写入该文件。 这样就完成了日志的切割,切割过程中不会丢失任何日志信息。访问 启动Nginx后,浏览器访问:http://192.168.10.101:80/结果如下:安装Tomcat下载资源 下载Tomcat并解压。#下载tomcat压缩包wget-P/usr/local/srchttps://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.38/bin/apache-tomcat-9.0.38。tar.gz#创建目录mkdir-p/usr/local/tomcat#解压tar-zxvf/usr/local/src/apache-tomcat-9.0.38.tar.gz-C/usr/local/tomcat修改页面 修改Tomcat自带的ROOT工程中的index.jsp页面。#编辑index.jspvim/usr/local/tomcat/apache-tomcat-9.0.38/webapps/ROOT/index.jsp 在body标签中添加一些内容来区分不同的服务器。
