Nginx
是一款高性能的http服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。而tomcat只支持5百并发。
1.反向代理
-
正向代理,需要在客户端配置代理服务器;
-
反向代理,客户端不需要做任何配置就可以访问,我们只需要发送请求到反向代理服务器,由反向代理服务器去选择目标服务器获取数据响应给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器的地址,隐藏了真实服务器的ip地址;
实质 个人理解反向代理就是nginx拦截动态请求之后转发给某个tomcat。这个在集群和分布式都可以使用这个来进行配置转发。
作用 隐藏真实的访问ip地址。我们可以看到流程图中我们访问的最多也就是公网的ip,但是具体tomcat在那个ip是不知道的,这样就能减少tomcat被攻击,提高了服务器的安全性。
2.负载均衡
将原本请求集中到单个服务器上的情况,改为配置多台服务器,然后将请求负载分发到配置的多台服务器上;
3.动静分离
-
传统项目是否,把静态资源 html,css,js 和 动态资源 jsp,java代码全部部署到tomcat;
-
动静分离 把静态资源和动态资源分开部署到不同的服务器上,通过nginx配置来区分客户端请求该去请求那台服务器;
4.安装依赖
1.下载安装所需依赖
[root@TS-01-Linux7 /]# cd /usr/src/
[root@TS-01-Linux7 src]# wget http://nginx.org/download/nginx-1.10.2.tar.gz
[root@TS-01-Linux7 src]# wget --no-check-certificate http://www.openssl.org/source/openssl-fips-2.0.10.tar.gz
[root@TS-01-Linux7 src]# wget http://zlib.net/zlib-1.2.11.tar.gz
[root@TS-01-Linux7 src]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
https://netix.dl.sourceforge.net/project/pcre/pcre/8.40/pcre-8.40.tar.gz 失败直接在浏览器下载;
2.解压pcre依赖
2.1 解压 pcre
[root@TS-01-Linux7 src]# tar -xvf pcre-8.40.tar.gz
2.2 进入解压之后的目录,执行 ./configure
命令
2.3 没有异常在当前目录下执行下面命令
2.4 make && make install
3.安装其他的依赖
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
5.安装Nginx
- 解压 nginx
[root@TS-01-Linux7 src]# tar -xvf nginx-1.20.2.tar.gz
-
进入解压目录
cd nginx-1.20.2
,执行命令./configure
-
执行命令
make && make install
-
成功后,会在/usr/local/ 下生产目录
-
开启 nginx
[root@TS-01-Linux7 sbin]# -ef | grep nginx
-
查看 nginx 进程,证明安装ok
-
进入 conf 目录下,打开 nginx.conf,可以在我们本机访问,访问失败的可以关闭防火墙或者开放端口在访问
firewall-cmd --zone=public --add-port=80/tcp --permanent
开放80端口firewall-cmd --reload
重启防火墙
6.Nginx常用命令
使用Nginx命令必须进入Nginx的目录下 /usr/local/nginx/sbin
-
查看nginx版本号
[root@TS-01-Linux7 sbin]# ./nginx -v nginx version: nginx/1.20.2
-
启动nginx
[root@TS-01-Linux7 sbin]# ./nginx [root@TS-01-Linux7 sbin]# ps -ef | grep nginx root 7944 1 0 09:49 ? 00:00:00 nginx: master process ./nginx nobody 7945 7944 0 09:49 ? 00:00:00 nginx: worker process root 7947 7907 0 09:49 pts/0 00:00:00 grep --color=auto nginx
-
关闭nginx
[root@TS-01-Linux7 sbin]# ./nginx -s stop [root@TS-01-Linux7 sbin]# ps -ef | grep nginx root 7941 7907 0 09:48 pts/0 00:00:00 grep --color=auto nginx
-
重新加载nginx
[root@TS-01-Linux7 sbin]# ./nginx -s reload
7.Nginx配置文件
Nginx
配置文件由三部分组成
1.全局块
设置一些影响 nginx 服务整体运行的配置指令,主要包括配置运行 nginx 服务器的用户(组),允许生产的 worker process 数,进程 Pid 存放路径,日志存放路径和类型以及配置文件的引入等;
worker_processes
的值越大支持的并发量也越多
2.events块
设置影响服务器与用户网络连接,常用的设置包括是否开启对多 worker process 下的网络链接,是否允许接收多个网络连接,每个 woker process 可以同时支持的最大连接数等;
默认配置,表示每个 worker process 支持的最大连接数为 1024
3.http块
http 全局块配置的指令包括文件引入,MIME-TYPE 定义,日志自定义,连接超时时间,单连接请求数上限等;
8.Nginx配置-实例1-反向代理
例:访问 nginx 代理地址,跳转到我们 linux 安装的 tomcat8080 页面
- 给 nginx 准备域名映射 ip 地址
-
修改 nginx 配置文件 将 IP 改为上图解析的 IP, 添加映射 IP
-
如果是在 nginx 开的时候修改的
ps -A | grep nginx
查看进程kill -9 pid
杀掉进程,重启 -
访问域名,成功跳转到 tomcat 8080 页面
9.Nginx配置-实例2-反向代理
例:Nginx 监听 9001 端口:
-
访问 127.0.0.1:9001/edu/ 跳转到 127.0.0.1:8080
-
访问 127.0.0.1:9001/vod/ 跳转到 127.0.0.1:8081
10.Nginx配置-实例-负载均衡
例:访问 同一个 路径,负载均衡效果,将请求平均分发到 8080 和 8081 服务器上;
11.Nginx的分配策略
1.轮询 (默认)
每个请求按照时间顺序逐一分配到不同的服务器上,如果后端服务器宕机了,就剔除掉;
2.weight (权重)
weight 默认权重1,权重越高被分配的客户端就越多
# 负载均衡配置参数
upstream myserver {
server ip:8080 weight=10;
server ip:8081 weight=5;
}
3.ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客访问固定一个后端服务器,可以解决 session 的问题;
# 负载均衡配置参数
upstream myserver {
ip_hash;
server ip.128:8080;
server ip:8081;
}
4.fair
按照后端服务器的响应时间来分配请求,响应时间短的优先分配;
# 负载均衡配置参数
upstream myserver {
server ip:8080;
server ip:8081;
fair;
}
12.Nginx配置-实例-动静分离
常用的方式把静态资源文件独立成单独的域名,放在独立的服务器上,另外一种把静态和动态资源混合放在一起,通过 Nginx 来分开;
实例:让 Nginx 分别指向不同的资源
location /www/ {
root /data/;
index index.html index.htm;
expires; // 设置缓存时间
}
location /img/ {
root /data/;
autoindex on;
}