文章目录
1、nginx基本概念
1)nginx是什么,做什么
- Nginx 是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现交互
- nginx专为性能优化而开发,性能是其重要的考量,实现上非常注重效率,能经受住高并发的考验,有报告表明能支持高达50,000个并发连接数
2)反向代理
-
正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问
-
反向代理:我们只需要将请求发送到反向代理服务器,有反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真是服务器IP地址
3)负载均衡
单台服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
4)动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力
2、nginx 安装、常用命令和配置文件
1)在linux系统中安装nginx
-
使用远程工具连接linux操作系统
-
nginx相关依赖openssl、zlib、pcre, 最后安装Nginx包
- 1、pcre安装:
- 把安装压缩文件放到linux操作系统中
- 解压压缩文件( tar -xvf pcre压缩包名称)
- 进入解压之后的目录,执行./configure (检查操作)或者sudo ./configure --prefix=/usr/local (如果配置了–prefix;安装后的所有资源文件都会被放在/usr/local/pcre目录中,不会分散到其他问目录。使用–prefix选项的另一个好处是方便卸载软件或移植软件当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载干净)
- 使用make&&make install (编译并且安装)
- 安装之后,pcre-config --version检查安装版本
- 2、安装其他依赖
yum install -y make zlib zlib-devel gcc gcc-c++ openssl openssl-devel
- 安装nginx
- 把安装压缩文件放到linux操作系统中
- 解压压缩文件( tar -xvf 压缩包名称)
- 进入解压之后的目录,执行./configure (检查操作)
- 使用make&&make install (编译并且安装)
!安装完成之后,在usr里多出来一个文件夹local/nginx,在nginx有sbin有启动脚本
如果有防火墙导致端口80不能访问,要先设置防火墙端口开放 - 1、pcre安装:
2)nginx常用命令
查看进程 ps -ef | grep nginx
查看开放端口 firewall-cmd --list-all
设置开放的端口号 firewall-cmd --add-port=80/tcp --permanent
重启防火墙 firewall-cmd --reload
常见操作命令
查看当前nginx的状态 ps -ef | grep nginx
1、进入nginx目录 cd /usr/local/nginx/sbin
2、查看nginx的版本号 ./nginx -v
3、启动nginx ./nginx
4、关闭nginx ./nginx -s stop
5、重新加载nginx ./nginx -s reload
3)nginx配置文件
3.1 nginx配置文件:
/usr/local/nginx/conf/nginx.conf
3.2 分为三部分
全局块
从配置文件开始到 events 块之间的内容,主要设置一些影响 nginx 服务器整体运行的配置指令 比如
worker_processes 1; worker_processes 值越大,可以支持的并发处理量也越多
events块
events块涉及的指令主要影响Nginx服务器与用户的网络连接 比如worker_connections 1024; 支持的最大连接数
http部分
Nginx 服务器配置中最频繁的部分 http块也可以包括 http全局块、server块
3、nginx配置实例
1)反向代理
nginx配置本地的反向代理: 配置proxy_pass字段
2)负载均衡
在server上配置upstream在server里设置proxy_pass
* nginx 分配服务器策略
第一种 轮询(默认)
每个请求按照时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
第二种
weight 代表权重,默认为1,权重越高被分配的客户端越多
第三种 ip_hash
每个请求按照访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
第四种 fair
按照后端服务器的响应时间来分配请求,响应时间短的优先分配
3)动静分离
4)高可用集群
nginx若宕机,则请求无法实现效果,因此高可用集群出现:
其中有nginx主服务器和nginx备份服务器
(1)需要两台nginx服务器
(2)需要keepalived,在两台服务器上安装
//安装命令
cd /usr
yum install keepalived -y
//查看下keepalived安装情况
rpm -q -a keepalived
安装之后,在etc里面生成目录keepalived,有文件keepalived.conf
(3) 需要虚拟ip
修改/keepalived/keepalived.conf
global_defs {
notification_email { // 定义服务故障报警的邮件地址
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc // 发件人地址
smtp_server 192.168.200.1 //指定发送邮件的SMTP服务器,如果本机开启了sendmail或postfix,可以使用上面的默认配置发送邮件
smtp_connect_timeout 30 // 连接smtp超时时间
router_id LVS_DEVELBACK // 路由标识,全局唯一;可以访问到主机
vrrp_script chk_http_port{
script "/usr/local/src/nginx_check.sh"
interval 2 // 检查脚本执行间隔
weight -2
}
vrrp_instance VI_1 { // 虚拟ip;定义一个vrrp_instance实例,名字为VI_1,可以有多个
state MASTER //表示当前VI_1的状态为MASTER,状态只有MASTER和BACKUP
interface en0 // 网卡
virtual_router_id 51 //主、备机的virtual_router_id必须相同
priority 100 // 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1 // 检测心跳时间 每隔1s
authentication { // 权限校验方式
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { // 可以绑定多个ip
192.168.10.99 //vrrp h 虚拟地址
}
}
vrrp_instance VI_2 {
state BACKUP
interface eth0
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.100
}
}
}
在/usr/local/src里添加检测脚本
#!/bin/bash
A = `ps -C nginx -no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
启动服务器的nginx和keepalived
//启动 keepalived
systemctl start keepalived.service
// 关闭keepalived
systemctl stop keepalived.service
4、nginx原理
Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程。其中master充当整个进程组与用户的交互接口,同时对进程进行监护,管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。worker用来处理基本的网络事件,worker之间是平等的,他们共同竞争来处理来自客户端的请求。
* worker数与服务器的cpu数想等最适宜
- 连接数worker_connections
第一个:发送请求,占用worker的几个连接数?
答: 2个或者4个
2)nginx有一个master,有worker_processes个worker,每个worker支持最大的连接数1024,支持的最大并发数是多少?
普通的静态访问最大并发数是:worker_connectionsworker_processes/2
如果是http座位反向代理来说,最大并发数量应该是worker_connectionsworker_processes/4