功能:
反向代理:代理服务端
负载均衡:轮询、加权轮询和ip_hash(固定ip只会访问到一台服务器)
动静分离:对css、js等静态资源进行缓存,提高响应速度
下载安装:
②直接安装:yum install nginx -y
配置文件 (/etc/nginx/nginx.conf):
全局配置
worker_processes 1; #nginx进程数,通常与CPU核数一致
events块
work_connections 1024; #每个进程允许最大并发数
http块
include mime.types; #决定返回数据是展示还是下载
default_type application/octet-stream; #mime.types没有包含的数据类型,此配置为默认项
sendfile on; #数据零拷贝,nginx不再缓存文件,直接文件读取发送给客户端
server块(每个server块都可以看作一个虚拟主机virtual host)
listen 80;
server_name localhost; #域名、主机名(可同时配置多个)
location /{
root html; #相对路径,使用nginx根目录下的html文件夹
index index.html index.htm; #默认页
proxy-pass http://x.x.x.x:xx; #指定服务器
#注意:在一个location中 proxy-pass 和 root index只能二选一,要么使用本机网页要么指定服务器
}
error_page 500 502 /50x.html; #出现错误跳转50x.html页面
不同的server块都可以监听80端口,但域名不同(虽然域名指向同一个IP地址),根据域名解析到不同的目录。
若访问时使用了配置文件中不存在的ServerName,则会匹配配置文件中的第一个server块
常用指令:
nginx -v #查看nginx版本
nginx -s stop #强制关闭
nginx -s quit #退出nginx
nginx -s reload #重新加载配置文件
nginx -c /path/x #启动时指定配置文件
动静分离:
server {
location /css {
root html; #网页需要的css文件夹在nginx目录下的html文件夹中
}
}
负载均衡:
upstream balance {
server x.x.x.x:80 weight=1; #weight 权重是1
server y.y.y.y:80 weight=2 down; #down下线
server z.z.z.z:80 weight=3 backup; #备用状态,不会上线
}
server {
...
location / {
proxy_pass http://balance;
}
}
负载均衡算法:
upstream balance {
least_conn; #最少连接访问
ip_hash; #根据用户的ip地址固定访问到一台服务器
url_hash; #根据访问的url定向转发请求(需要插件支持)
fair; #根据后端服务器响应时间转发请求(需要插件支持)
...
}
Nginx 高可用(High Availability):
目的:使用keepalived当一台nginx服务器不能提供服务时另一台nginx服务器能够快速顶替
下载安装:yum install keepalived -y
配置文件:/etc/keeplived/keeplived.conf
修改配置信息:
global_defs{
router_id xxx #不同机器需要更改
}
vrrp_instance yyyy{
state MASTER #身份 BACKUP
interface ????? #网卡名称 /etc/sysconfig/network-scripts/ifcfg-?????
virtual_router_id x #不需要更改,主备得一致
priority 100 #优先级,主备竞选使用
advert_int 1 #间隔检测时间
authentication {
auth_type pass
auth_pass 1111
} #配对keeplived,相同认证信息组成一个组
virtual_ipaddress{
x.x.x.x #虚拟IP地址
}
}
启动keepalived:systemctl start keepalived
keeplived检测宿主机是否可用依托其进程是否存在,并不能实际知悉服务器对应程序是否还在正常运行。可以使用脚本检测应用服务是否异常,终止keepalived进程达到漂移IP地址的目的。
具体应用:
keepalived使用的虚拟IP需要绑定外网IP,阿里云或腾讯云的普通ECS云服务器使用的是NAT转发,这样安装keepalived并指定virtual ip外网是访问不到的。笔者搜了很多教程,全是自己用虚拟机安装keepalived搭建的环境。
正确方式是使用VPC(私有/专有网络)创建HAVIP(高可用虚拟IP)绑定到ECS服务器上,同时HAVIP需要绑定公网IP。
学习参考:
私有网络 用 HAVIP+Keepalived 搭建高可用主备集群 - 最佳实践 - 文档中心 - 腾讯云