Nginx
1.简介
1.1什么是Nginx?
Nginx就是一个服务器,他可以作为http服务器,反向代理服务器,也可以作为邮件代理服务器。
Nginx的特点是占用内存少,并发处理能力强。Nginx的并发处理能力在同类的Web服务器中表现较好,在全世界范围内,有大量的网站在使用Nginx。如国内的:淘宝,新浪,网易等等。
1.2安装
-
下载
我的版本CentOS版本是7mini
下载Nginx
使用Xshell6用它来远程管理Linux十分好用
-
安装前置库
yum -y install gcc gcc-c++ make automake pcre pcre-devel zlib zlib-devel openssl openssl-devel
-
上传
yum -y install lrzsz rz -y
1.3部署一个静态网站
- 将准备好的静态网站打包上传,上传目录为:/opt/www
-
在该目录下解压文件,没有unzip,使用yum安装一个
unzip disney.zip
-
修改Nginx主配置文件,在server中加入
location /disney { root /opt/www; index index.html; }
-
重新加载
nginx -s reload
-
通过浏览器访问
2.负载均衡
2.1什么是负载均衡?
随着业务量的增大,一台服务器压力越来越大,我们不可能一直换更高级的服务器,此时可以增加服务器数量,构建"集群"提供服务,将请求分发到各个服务器上。所谓负载均衡就是将请求分配给集群中不同的服务器上。
原理图
2.2安装tomcat
- 准备3个tomcat
-
修改配置
-
启动服务
//启动tomcat ./apache-tomcat-9.0.39-8081/bin/startup.sh
-
开放端口
//开启端口 firewall-cmd --add-port=8090/tcp --permanent //重启端口 firewall-cmd --reload //查看端口 firewall-cmd --list-ports
-
准备一个简单项目打成war包
-
上传,部署
-
负载均衡配置
user nobody; worker_processes 4; pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; gzip on; # //注意 upstream www.myweb.com { server 172.16.2.130:8081; server 172.16.2.130:8082; } server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } # //注意 location /myweb { proxy_pass http://www.myweb.com; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
-
测试刷新
注意:
我只准备了两个tomcat端口,只要访问就会看到8081和8082之间切换。
jsp页面代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="utf-8">
<title>index.jsp</title>
</head>
<body>
<h3>Hello, JSP</h3>
本次请求的端口号是:8080 <br>
会话id: <%=session.getId()%>
</body>
</html>
2.3负载均衡策略(详情轮询算法之前发的)
-
轮询
Nginx默认会将请求均匀的转发给tomcat服务器
-
权重轮询weight
平滑加权轮询算法
upstream www.myweb.com { server 172.16.2.130:8081 weight=3; server 172.16.2.130:8082 weight=1; server 172.16.2.130:8083 weight=1; }
轮询顺序:
-
ip_hash
Nginx获取发起请求的客户端ip,然后计算出ip地址的hash值,根据这个hash值将请求转发给tomcat,只要客户端ip地址不变,这个客户端就会一直访问同一个tomcat。
upstream www.myweb.com { ip_hash; server 172.16.2.130:8081 weight=3; server 172.16.2.130:8082 weight=1; server 172.16.2.130:8083 weight=1; }
-
最少连接least_conn
请求会被转发到连接数最少的tomcat服务器上
upstream www.myweb.com { least_conn; server 172.16.2.130:8081 weight=3; server 172.16.2.130:8082 weight=1; }
-
backup服务器
upstream www.myweb.com { server 172.16.2.130:8081 weight=3; server 172.16.2.130:8082 weight=1; server 172.16.2.130:8083 backup; }
当占用8081和8082端口的服务器都挂掉,端口为8083的tomcat服务器才会处理请求。在实际应用中,这是用来恢复数据的。
3.代理服务器
指在局域网内部的机器通过代理服务器发送请求到互联网服务器,代理服务器一般在客户端。Nginx是反向代理。
3.1正向代理
客户端知道自己的请求,最终被转发到那个服务器上。
正向代理的是客户端,是把代理服务器配置在客户端。
3.2反向代理
客户端不知道自己的请求,最终被转发到那个服务器上。
反向代理的是服务器端,是把代理服务器配置在服务端。
4.动静分离
nginx部署静态网页,tomcat部署动态web。
客户端将请求动态网站发给nginx nginx转发给tomcat,tomcat将文件解析后发给nginx,nginx将数据流发给客户端。
为了减轻服务器压力进行动静分离,tomcat不擅长处理html文件,所以在实际应用中,我们将静态资源(图片、css、html、js等)都交给Nginx处理,Nginx更擅长于静态资源的处理,性能更好,效率更高!把静态资源部署到Nginx服务中,而不是部署到tomcat中。
好久没有更新了!虽然看到人不多但是,还是要说sry!!