ASCII码 ASCII码

nginx光速入门到进阶

发布于:2022-04-16 13:35:00  栏目:技术文档

1、nginx基本概念

(1)nginx是什么,做什么事

高性能、高并发(高达50000)、占有内存少、性能优化

2、nginx安装、常用命令和配置文件

(1)在linux系统中安装nginx
/usr/src:系统级的源码目录。
/usr/local/src:用户级的源码目录
#安装相关依赖,安装编译工具及库文件
yum-yinstallmakezlibzlib-develgcc-c++libtoolopensslopenssl-devel
#
#安装PCRE依赖,PCRE作用是让Nginx支持Rewrite功能。
wgethttp://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
#解压安装包:
tarzxvfpcre-8.35.tar.gz
#进入安装包目录
[root@bogonsrc]#cdpcre-8.35
#安装
[root@bogonpcre-8.35]#./configure
[root@bogonpcre-8.35]#make&&makeinstall
5、查看pcre版本
[root@bogonpcre-8.35]#pcre-config--version
安装Nginx
1、下载Nginx,下载地址:https://nginx.org/en/download.html
[root@bogonsrc]#cd/usr/local/src/
[root@bogonsrc]#wgethttp://nginx.org/download/nginx-1.12.2.tar.gz
2、解压安装包
[root@bogonsrc]#tarzxvfnginx-1.12.2.tar.gz
3、进入安装包目录
[root@bogonsrc]#cdnginx-1.12.2
4、编译安装(可以指定安装路径,也可以使用默认的)
[root@bogonnginx-1.6.2]#./configure--prefix=/usr/local/webserver/nginx--with-http_stub_status_module--with-http_ssl_module--with-pcre=/usr/local/src/pcre-8.35
[root@bogonnginx-1.6.2]#make
[root@bogonnginx-1.6.2]#makeinstall
5、查看nginx版本
[root@bogonnginx-1.6.2]#/usr/local/webserver/nginx/sbin/nginx-v

6、安装成功之后,在 /usr/local/nginx/sbin路径下有启动脚本

[root@localhostnginx-1.12.2]#cd/usr/local/nginx/
[root@localhostnginx]#ls
confhtmllogssbin
[root@localhostnginx]#^C
[root@localhostnginx]#cdsbin/
[root@localhostsbin]#ls
nginxnginx.old
[root@localhostsbin]#
#查看开放的端口号
firewall-cmd--list-all
#设置开放的服务和端口号
firewall-cmd--add-service=http--permanent
firewall-cmd--add-port=80/tcp--permanent

Image.png(2)nginx常用命令

Image.png

(3)nginx配置文件

Image.png

nginx配置文件有三部分组成

1.全局块

从配置文件开始到events块之间的内容,
主要会设置一些影响nginx服务器整体运行的配置指令:

主要包括配置文件运行nginx服务器的用户(组)、允许生成的workerprocess数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等

Image.png

这是nginx服务器并发处理服务的关键配置,worker_processes值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。

2events块

Image.png

events块涉及的指令主要影响nginx服务器与用户的网络连接
比如worker_connections1024;支持的最大连接数。

3.http块

nginx服务配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

Image.png

注意:http块也可以包括http全局块、server块

配置正反向代理

正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。

Image.png

反向代理:客户端只需要将请求发送给反向代理服务器,由反向代理服务器去选择目标服务器获取数据返回给客户端。

Image.png

3、nginx配置实例1-反向代理

1、实现效果
(1)打开浏览器,在浏览器地址栏输入地址xxxxxx(自己的ip),跳转到linux系统tomcat主页面中
2、准备工作
(1)在Linux系统中安装tomcat
wgethttp://archive.apache.org/dist/tomcat/tomcat-7/v7.0.70/bin/apache-tomcat-7.0.70.tar.gz
然后解压tar-zxvf+压缩包名
启动tomcat服务器(在Linux系统中,tomcat使用默认端口8080)
开放对外访问的端口
firewall-cmd--add-port=8080/tcp--permanent
firewall-cmd-reload重启防火墙
查看已经开放的端口号
firewall-cmd--list-all

启动tomcat服务器

Image.png

查看启动后的日志文件

Image.png

在浏览器访问tomcat服务器

Image.png

反向代理案例一:

访问过程的分析

Image.png

具体配置

  1. 在Windows系统的host文件进行域名和ip对应关系的配置

Image.png

  1. 在最后面加上 192.168.171.131www.123.com(根据自己服务器的ip来设置)

2.在nginx进行请求转发的配置(反向代理配置)/usr/local/nginx/conf/nging.conf

Image.png

重新启动nginx(我这里是将它停止在启动)

Image.png

输入http://www.123.com/ 访问,注意不用添加端口号,默认使用80端口号访问nginx,然后跳转到tomcat服务器,实现反向代理的效果。

Image.png

反向代理案例二:

目标:
使用nginx反向代理,根据访问路径跳转到不同端口的服务中,nginx监听端口为9001
访问http://192.168.171.131:9001/edu/直接跳转到127.0.0.1:8080
访问http://192.168.171.131:9001/vod/直接跳转到127.0.0.1:8081
2、准备工作
(1)准备两个tomcat服务器,一个8080端口,一个8081端口
(2)创建文件夹和测试页面
3、具体配置
修改nginx配置文件如下图:

Image.png

(2)开放对外访问的端口号 9001 8080 8081

关闭nginx在开启

Image.png

4.测试

Image.png

Image.png

以上案例:

客户端将请求发送到nginx反向代理服务器,nginx反向代理将客户端的请求发送到目标服务器获取数据,目标服务器回应再转发回给代理服务器再转发到客户端。
location指令说明:
该指令用于匹配URL。

Image.png

3、nginx负载均衡配置

单个服务器解决不了了,我们增加服务器的数量,然后将请求分发到服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。

Image.png

nginx配置实例2-负载均衡

1.实现效果
(1)浏览器地址栏输入地址http://192.168.171.131:9001/edu/a.html,负载均衡效果,平均8080和8081端口中
2.准备工作
(1)准备两台tomcat服务器,一台8080,一台8081
(2)在两台tomcat里面webapps目录中,创建名称是edu文件夹,在edu文件中创建页面a.html用于测试。
3.在nginx的配置文件中进行负载均衡的配置(http块添加修改)

Image.png

Image.png

测试——刷新一次就会访问不同服务器(8081——8080)

Image.png

4、nginx分配服务器策略

1).轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight
weight代表权重,默认为1,权重越高被分配的客户端越多。
指定轮询几率,weight和访问率成正比,用于后端服务器性能不均的情况。

Image.png

3)、ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题

Image.png

4、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

Image.png

nginx动静分离

目的是加快网站的解析速度。可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。

Image.png

1.准备工作

1)在Linux系统中准备静态资源,用于进行访问

Image.png

2、修改nginx配置文件

Image.png

重启nginx

3.测试:

(1)浏览器中输入地址

Image.png

添加端口、访问名字

Image.png

6、nginx配置高可用集群

Image.png

配置高可用的准备工作:

(1)需要两台服务器192.168.171.131和192.168.171.129
(2)在两台服务器安装nginx
(3)在两台服务器安装keepalived
使用yum命令进行安装
yuminstallkeepalived-y

Image.png

#安装之后再etc里面生成目录keepalived。

Image.png

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

(1)/etc/keepalived/keepalivec.conf配置文件

主服务

Image.png

Image.png

#可以直接复制替换源文件内容

global_defs{#全局定义
notification_email{
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_fromAlexandre.Cassen@firewall.loc
smtp_server192.168.171.131#自己服务器IP
smtp_connect_timeout30
router_idLVS_DEVEL#唯一不重复
}
#脚本配置
vrrp_scriptchk_http_port{
script"/usr/local/nginx/nginx_check.sh"#检测脚本的路径及名称
interval2#(检测脚本执行的间隔)
weight-20#权重。设置当前服务器的权重,此处的配置说明:当前服务器如果宕机了,那么该服务器的权重降低20
}
#虚拟IP配置
vrrp_instanceVI_1{
stateBACKUP#主服务器写MASTER、备份服务器写BACKUP
interfaceens33#网卡
virtual_router_id51#主、备机的virtual_router_id必须相同
priority100#主、备机取不同的优先级,主机值较大,备份机值较小
advert_int1#时间间隔。每隔多少秒发送一次心跳检测服务器是否还活着,默认1秒发送一次心跳
authentication{
auth_typePASS
auth_pass1111
}
virtual_ipaddress{
192.168.171.50//VRRPH虚拟IP地址,网段要和linux的网段一致,可以绑定多个虚拟ip
}}

从服务

Image.png

可以直接复制替换源文件

global_defs{#全局定义
notification_email{
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_fromAlexandre.Cassen@firewall.loc
smtp_server192.168.171.129#自己服务器IP
smtp_connect_timeout30
router_idLVS_DEVEL#唯一不重复
}
#脚本配置
vrrp_scriptchk_http_port{
script"/usr/local/nginx/nginx_check.sh"#检测脚本的路径及名称
interval2#(检测脚本执行的间隔)
weight-20#权重。设置当前服务器的权重,此处的配置说明:当前服务器如果宕机了,那么该服务器的权重降低20
}
#虚拟IP配置
vrrp_instanceVI_1{
stateBACKUP#主服务器写MASTER、备份服务器写BACKUP
interfaceens33#网卡
virtual_router_id51#主、备机的virtual_router_id必须相同
priority90#主、备机取不同的优先级,主机值较大,备份机值较小
advert_int1#时间间隔。每隔多少秒发送一次心跳检测服务器是否还活着,默认1秒发送一次心跳
authentication{
auth_typePASS
auth_pass1111
}
virtual_ipaddress{
192.168.171.50//VRRPH虚拟IP地址,网段要和linux的网段一致,可以绑定多个虚拟ip
}}

(2)在/usr/local/src 添加脚本(从和主都是一样的内容)

#!/bin/bash
A=`ps-Cnginx-no-header|wc-l`
if[$A-eq0];then
/usr/local/nginx/sbin/nginx
sleep2
if[`ps-Cnginx-no-header|wc-l`-eq0];then
killallkeepalived
fi
fi

启动主从服务的nginx和keepalived服务

[root@localhostsbin]#./nginx-sstop
[root@localhostsbin]#./nginx
[root@localhostsbin]#systemctlstartkeepalived.service
[root@localhostsbin]#ps-ef|grepkeepalived
root1106021015:46?00:00:00/usr/sbin/keepalived-D
root110603110602015:46?00:00:00/usr/sbin/keepalived-D
root110604110602015:46?00:00:00/usr/sbin/keepalived-D
root1106577510015:50pts/000:00:00grep--color=autokeepalived
[root@localhostsbin]#

最终测试

1.在浏览器地址栏输入虚拟IP地址 :192.168.171.50

2.关掉主服务器的nginx服务和keeplived服务,再次访问——成功。

Image.png

nginx原理

  1. master&worker——(管理和工作)

Image.png

Image.png

2、worker如何进行工作的?

Image.png

3.一个master和多个woker有什么好处?

1)可以使用nginx -s reload热部署,利用nginx进行热部署操作

2)每个woker是独立的进程,如果有其中一个woker出现问题,其他worker独立的,

继续进行争抢,实现请求过程,不会造成服务中断。

4、需要设置多少个worker

worker数和服务器的cpu数相等是最为适宜的

5、连接数worker_connection

第一个:发送请求,占用了worker的几个连接数?

2或4个

第二个:nginx有一个master,有四个woker,每个woker支持最大的连接数据1024,支持的最大并发数是多少?

公式:

Image.png

微信公众号:黑马金牌编程

个人网站:http://www.heimajinpai.cn/wordpress/

相关推荐
阅读 +