Nginx的那些事儿

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.129192.168.17.131
②在两台服务器安装nginx
③在两台服务器安装keepalived
使用 yum命令 进行安装:

yum install keepalived -y

安装之后,在etc里生成目录keepalived,有文件keepalived.conf

完成高可用配置(主从配置)

①修改/etc/keepalived/keepalived.conf配置;
②在/usr/local/src添加检测脚本;
③把两台服务器上nginxkeepalived启动
启动 nginx:

./nginx

启动 keepalived :

systemctl start keepalived.service

最终测试

①在浏览器地址栏输入 虚拟IP地址: 192.168.17.50
②把服务器 nginx 和 keepalived 停止,再输入 192.168.17.50

上一篇:nginx


下一篇:Gunicorn