Nginx之负载均衡与反向代理(附加安装)
centos7下的nginx的安装
1. 检索是否安装了nginx
rpm -af|grep nginx
2. 在安装之前要处理下源
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
3. 使用下面命令安装nginx
yum -y install nginx
4. 启动、关闭nginx
systemctl start nginx //启动nginx
systemctl stop nginx //关闭nginx
5.防火墙允许通过80端口
firewall-cmd --add-port=80/tcp --permanent
6. 重启防火墙让其生效
firewall-cmd --reload
7. 外界远程访问测试:
http://IP
访问成功:
部署Nginx+Tomcat集群
1. 多个tomcat准备
1)上传Tomcat到linux上
2)解压
3)修改解压缩后的Tomcat文件夹名字,如下。此处弄好了两个tomcat
2. 修改tomcat的配置文件
使用vi命令编辑配置文件
vi tomcat1/conf/server.xml
//按下 i 键进入编辑状态
找到8080这个端口号,修改为8081:
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
找到8009这个端口号,修改为8010:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
找到节点Engine,增加内容 jvmRoute=“jvm1”
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
全部设置好之后
替换完成后按下Esc,然后按下shift+;,输入wq保存退出
然后启动启动Tomcat服务器1
3. 测试服务器是否正常启动
此处正常访问:
也可以通过实时查看服务器的日志
实时查看日志的命令:
tail -f /tomcat1/logs/catalina.out
画面展示解释:
首先通过命令可以发现tomcat的首页:
cd tomcat1/webapps/ROOT
然后我们根据自己的喜好替换即可,此处我在页面加了展示文字(—tomcat1–),目的让大家看的清楚
tomcat2的配置参照如上,记得设置的时候要和上面tomcat1中设置的所有参数要不同(端口号、节点Engine什么的),避免冲突
tomcat2成功配置启动后的页面展示:
反向代理
什么是反向代理?
当我们有一个服务器集群,并且服务器集群中的每台服务器的内容一样的时候,同样我们要直接从个人电脑访问到服务器集群服务器的时候无法访问,必须通过第三方服务器才能访问集群
这个时候,我们通过第三方服务器访问服务器集群的内容,但是我们并不知道是哪一台服务器提供的内容,此种代理方式称为反向代理
负载均衡
什么是负载均衡?
公司会建立很多的服务器,这些服务器组成了服务器集群,然后,当用户访问网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入选择的服务器
所以,用户每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况
一句话:nginx会给你分配服务器压力小的去访问
配置Nginx负载均衡
图示:
修改Nginx配置文件
修改的命令
vi /etc/nginx/conf.d/default.conf
添加相关的端口,
添加代理
修改配置文件之后很重要的一步命令执行
setsebool -P httpd_can_network_connect 1
测试:
Nginx+Tomcat动静分离
还记得上文中的替换掉每一台tomcat的服务器的index.jsp,也就是首页吗
此时候我继续往首页中加上照片(静态资源)
修改替换的tomcat2服务器的index.jsp(tomcat1类似)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.*,java.text.*" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<center>
<h1>---我是tomcat2--</h1>
</center>
<%
Date dNow = new Date( );
SimpleDateFormat ft =
new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
out.print( "<h2 align=\"center\">" + ft.format(dNow) + "</h2>");
%>
<center>
<h1>图片</h1>
<img src="./1.jpg">
</center>
</body>
</html>
此时我们通过tomcat服务器访问
我们发现网页的图片都访问正常,静态资源也正常访问
我们通过Nginx反向代理访问:
我们都发现图片都不能正常显示
原因:nginx静态目录为储存该些图片,不能正常访问
配置Nginx动静分离
修改Nginx配置文件
命令:
vi /etc/nginx/conf.d/default.conf
添加如下图中的语句
重启nginx
配置完之后,等等,还有重要的一步,就是将我们所需要的静态资源都存入到nginx中
nginx中存放静态资源的目录:/usr/share/nginx/html
再来访问:
我们发现即使再nginx反向代理中也能正常访问图片了,加载了静态资源
Nginx负载均衡策略
1、轮询(默认)
每个web请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream 名字 {
server 192.168.237.128:8081;
server 192.168.237.128:8082;
}
2、最少连接
web请求会被转发到连接数最少的服务器上。
upstream 名字{
least_conn;
server192.168.237.128:8081;
server192.168.237.128:8082;
}
3、weight 权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,weight默认是1。
#服务器A和服务器B的访问比例为:2-1;比如有3个请求,前两个会访问A,三个访问B,其它规则和轮询一样。
upstream nginxDemo {
server 192.168.237.128:8081 weight=2; #服务器1
server192.168.237.128:8082; #服务器2
}
4、ip_hash
每个请求按访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一服务器进行处理,可以解决session的问题。当后台服务器宕机时,会自动跳转到其它服务器。
upstream nginxDemo {
ip_hash;
server192.168.237.128:8081 weight=2; #服务器1
server192.168.237.128:8082; #服务器2
}