介绍:
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
正向代理:
反向代理:
负载均衡:
动静分离:
安装Nginx:
博客地址: 使用yum安装Nginx
在nginx文件夹中的sbin是启动脚本。
启动nginx:
要想连接linux中的nginx需要关闭防火墙:
关闭防火墙命令: systemctl stop firewalld
不关闭防火墙连接到nginx:
1.使用 sudo firewall-cmd --add-port=80/tcp --permanent 设置要开放的端口
2.在重启防火墙 firewall-cmd --reload
使用Nginx命令:
使用nginx命令必须进入到 /usr/local/nginx/sbin/ 目录中
常用命令:
查看nginx的版本:
启动nginx:
关闭nginx:
重新加载nginx: 将nginx的配置文件重新加载,不是重启nginx
Nginx配置文件的组成:
Nginx配置文件由三部分组成:
第一部分:全局块
从配置文件开始到 events块之间的内容,主要会设置一些影响nginx 服务器整体运 行的配置指令,比如 worker_processes1; worker_processes值越大,可以支持的并发 处理量也越多。
第二部分:events块
events 块涉及的指令主要影响 Nginx服务器与用户的网络连接比如 : worker_ connections1024; 支持的最大连接数
第三部分:http块
Nginx服务器配置中最频繁的部分
http块也包括http全局块,server块
配置反向代理:
准备工作:
访问一个网站的流程:
会现在本地的host文件中找域名对应的ip地址,host文件中没有才到网络中的DNS中找。
host文件在windows的位置
具体配置:
(1)打开host文件在其中配置IP地址+域名
(2)在Nginx中进行请求转发的配置(反向代理配置)
/usr/local/nginx/conf/nginx.conf 在这个文件中配置反向代理
修改的内容如下:
根据URL判断跳转到哪个ip地址中:
要求:
在配置文件中进行实现:
测试结果:
负载均衡:
实现负载均衡:
在http块中进行配置,
Nginx分配服务器策略:
第一种:轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能 自动剔除。
第二种:weight
weight代表权,重默认为1,权重越高被分配的客户端越多。
第三种:ip hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以 解决session的问题。
第四种:fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
动静分离:
具体配置:
在http块中配置:
高可用:
高可用的具体配置可以看博客:
(1)keepalived.conf配置文件:
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" # 执行脚本所在的位置
interval 2 #检测脚本执行的间隔,单位秒,每个2秒执行一次脚本
weight 2
}
vrrp_instance VI_1 {
state MASTER # 备份服务器上将 MASTER 改为 BACKUP
interface ens33 # 绑定的网卡
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1 #每隔一秒发送一次心跳,确保从服务器是否还活着
authentication { # 心跳检测需要的密码
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 # VRRP H 虚拟地址
}
}
(2)在/usr/local/src 添加检测脚本,检查Nginx是否还活着
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx #Nginx启动命令的位置
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
(3)把两台服务器上 nginx 和 keepalived 启动
启动 nginx: ./nginx
启动 keepalived: systemctl start keepalived.service
keepalived常用命令
systemctl start keepalived.service
systemctl stop keepalived.service
systemctl restart keepalived.service