Hello~大家好,这里是KOKO!
众所周知,Nginx是一个高性能的HTTP和反向代理web
服务器,同时也提供了IMAP/POP3/SMTP
服务。本篇文章则讲述Nginx的那些事。
Nginx简介
1.什么是Nginx?
Nginx是高性能
的HTTP
和反向代理
服务器。
特点:
占有内存少
并发能力强
事实上,Nginx的并发能力确实在同类型的网页服务器中表现良好
Nginx专为性能优化
而开发,最高性能可达50000个
并发数。
2.反向代理
(1)正向代理
用户通过代理服务器
(浏览器中配置)访问局域网外的Internet。
(2)反向代理
用户访问反向代理服务器
,再由反向代理服务器根据请求访问不同的tomcat。
反向代理暴露的是服务器地址
,隐藏的是真实服务器IP地址。
3.负载均衡
当用户向服务器提交过多请求
时,单个服务器解决不了如此多的请求,于是我们增加服务器的数量
,并将请求分发到各个服务器上
。将负载分发到不同的服务器,也就是我们所说的负载均衡
。
4.动静分离
为了加快网站的解析速度
,我们可以把动态页面
和静态页面
由不同的服务器来解析
。这样,不仅可以加快解析速度,还可以降低原来单个服务器的压力
。
Nginx在Linux中的安装
Nginx在Windows系统也可以使用,只是在Windows系统下发挥的效用不如Linux系统下能发挥地更全面。因此,本节介绍在Linux操作系统下的安装。
Nginx安装时还需要安装依赖才能正常运行,因此总共需要安装以下素材:
pcre
openssl
zlib
nginx
PCRE库的安装
- 我们可以直接通过命令下载:
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.45.tar.gz
- 也可以通过官网编译下载:
官网:http://www.pcre.org/
最新版下载地址:https://sourceforge.net/projects/pcre/files/
下载下来后,通过xshell
或者xftp
传到虚拟机Linux系统的目录下。
解压:
tar -zxvf pcre-8.45.tar.gz
解压后的目录为pcre-8.45
。
然后进入到该目录:
cd pcre-8.45
进行配置、编译、安装;
配置:
./configure 或 ./config
编译及安装
make && make install
安装完后,我们可以查看版本号,看我们是否安装成功:
pcre-config --version
OpenSSL库的安装
- OpenSSL的安装可以和zlib的安装一起用命令实现;
- 可以用下面这条命令下载:
wget http://www.openssl.org/source/openssl-3.0.1.tar.gz
- 也可以通过官网安装:
官网:http://www.openssl.org
最新版下载地址:https://www.openssl.org/source/
解压:
tar -zxvf openssl-3.0.1.tar.gz
解压后的目录为openssl-3.0.1
。
然后进入到该目录:
cd openssl-3.0.1
进行配置、编译、安装;
配置:
./configure 或 ./config
编译及安装
make && make install
Zlib库的安装
- zlib的安装我们可以和OpenSSL一起用命令安装:
yum -y install make zlib zlib-devel gcc-c++ libtool openssl-devel
- 也可以用下面这条命令:
wget http://www.zlib.net/zlib-1.2.3.tar.gz
Nginx的安装
- 可以通过命令下载:
wget http://nginx.org/download/nginx-1.21.6.tar.gz
命令下载下来的Nginx,默认在/src/nginx
位置处。
- 也可以通过官网下载:
官网:http://nginx.org
最新版下载地址:http://nginx.org/en/download.html
解压:
tar -zxvf nginx-1.21.6.tar.gz
解压后的目录为nginx-1.21.6
。
然后进入到该目录:
cd nginx-1.21.6
进行配置、编译、安装;
配置:
./configure 或 ./config
编译及安装
make && make install
在我们彻底安装成功后,在usr
会多出来一个文件夹/local/nginx
,在/nginx
中有/sbin
,其中有启动脚本
。
Nginx操作的常用命令
前提条件——一定要进入Nginx的目录中去使用:/usr/local/nginx/sbin
。
- 查看Nginx的版本号:
./nginx -v
- 启动Nginx:
./nginx
- 关闭Nginx:
./nginx -s stop
- 重新加载Nginx:
./nginx -s reload
Nginx配置文件
Nginx配置文件位置
/usr/local/nginx/conf/nginx.conf
Nginx配置文件组成
分为三部分:
全局块
从配置文件开始到events
块之间的内容;
主要会设置一些影响Nginx服务器整体运行的配置指令
;
eg:worker_processes 1
:work_processes值越大,可以支持的并发处理器越多。
events块
涉及的指令主要影响Nginx服务器与用户的网络连接
;
eg:worker_connections 1024
:支持的最大连接数。
http块
Nginx服务器配置中最频繁的部分;
http全局块;
server块:server全局块、location块;
Nginx的原理
master&worker
worker是如何工作的
多个worker进行竞争工作,对每个任务进行争抢,再实现。
一个master和多个worker机制的好处
①可以使用nginx -s reload
热部署,利于nginx进行热部署操作;
②每个worker是独立的进程,如果有其中的一个worker出现问题,其他worker独立地继续进行争抢,实现请求过程不会造成服务中断。
设置多少个worker合适
worker数和服务器的CPU数相等是最为适宜的。
连接数worker_connection
①发送1个请求,占用了worker的几个连接数?
2个(静态请求)或4个(动态请求)。
②nginx有1个master,有4个worker。每个worker支持最大的连接数据
1024,支持的最大并发数
是多少?
worker最大支持的连接数:4*1024;
除以2或除以4,即可得到结果。
Nginx相关操作实例
反向代理①
实现效果:
打开浏览器,在浏览器地址栏输入地址www.123.com跳转到Linux系统tomcat主页面中。
准备工作:
(1)在Linux系统中安装 tomcat,使用默认端口8080
;
tomcat安装文件放到Linux系统中解压;
进入tomcat的bin
目录中,./startup.sh
启动 tomcat服务器;
(2)对外开放访问的端口:
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd -reload
#查看已经开放的端口号
firewall-cmd --list-all
(3)在Windows系统中通过浏览器访问 tomcat服务器;
具体配置:
(1)在Windows系统的host文件
中进行域名和IP对应关系的配置;
(2)在nginx进行请求转发的配置(反向代理配置);
(3)最终测试。
反向代理②
实现效果
使用nginx反向代理,根据访问的路径跳转到不同端口的服务中;
nginx监听端口为9001
;
访问http://127.0.0.1:9001/edu/ 直接跳转到127.0.0.1:8080
访问http://127.0.0.1:9001/vod/ 直接跳转到127.0.0.1:8081
准备工作
(1)准备两个 tomcat服务器,一个8080端口,一个8081端口;
(2)创建文件夹和测试页面;
具体配置
(1)找到nginx配置文件,进行反向代理配置;
(2)开放对外访问的端口号:9001、8080、8081
;
最终测试
负载均衡
实现效果:
浏览器地址栏输入地址http://192.168.17.129/edu/a.html(更换成本地IP),负载均衡效果 平均到8080和8081端口中。
准备工作:
(1)准备两台 tomcat服务器,一台8080,一台8081;
(2)在两台 tomcat里面,webapps
目录中,创建名称是edu
文件夹,在edu文件夹中创建页面a.html
用于测试;
在nginx的配置文件中进行负载均衡的配置;
- nginx几种分配的策略:
- 轮询(默认):
每个请求按照时间顺序逐一分配到不同的服务器中,如果服务器down掉,能自动剔除; - weight
代表权重,默认为1;权重越高,被分配的客户端越多; - ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个服务器可以解决session
问题; - fair(第三方)
按照后端服务器的响应时间来分配,响应时间短的优先分配;
动静分离
什么是动静分离
把动态请求和静态请求分开;
-
两种方式:
①纯粹把静态文件独立成单独的域名,放在独立的服务器上;<主流>
②动态和静态文件混合一起发布,通过nginx来分开;
准备工作
在Linux系统中准备静态资源,用于访问。
具体配置
在nginx配置文件中进行配置。
最终测试
①浏览器中输入地址: http://192.168.17.129/image/01.jpg
②在浏览器地址栏输入地址: http://192.168.17.129/www/a.html
tips:访问地址均需更换成本机IP哦~
nginx配置高可用的集群
什么是nginx高可用
①需要两台nginx服务器
②需要keepalived
③需要虚拟IP
准备工作
①需要两台服务器: 192.168.17.129
和192.168.17.131
②在两台服务器安装nginx
③在两台服务器安装keepalived
使用 yum命令 进行安装:
yum install keepalived -y
安装之后,在etc
里生成目录keepalived
,有文件keepalived.conf
完成高可用配置(主从配置)
①修改/etc/keepalived/keepalived.conf
配置;
②在/usr/local/src
添加检测脚本;
③把两台服务器上nginx
和keepalived
启动
启动 nginx:
./nginx
启动 keepalived :
systemctl start keepalived.service
最终测试
①在浏览器地址栏输入 虚拟IP地址: 192.168.17.50
②把服务器 nginx 和 keepalived 停止,再输入 192.168.17.50