一、Nginx安装
1、安装nginx环境
可以先查看本机是否已经安装过了。
# 查看yum源中是否有可用的依赖
yum search gcc-c++
# 查看本机是否安装
yum list installed |grep gcc-c++
开始安装
# 安装gcc环境
yum install -y gcc-c++
# 安装PCRE库,用于解析正则表达式, -y 表示:当安装过程提示选择时全部为"yes"
yum install -y pcre pcre-devel
# zlib压缩和解压缩依赖
yum install -y zlib zlib-devel
# 安装Open SSL,SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https
yum install -y openssl openssl-devel
yum install -y openssl libtool
2、下载并解压nginx安装包
wget http://nginx.org/download/nginx-1.16.1.tar.gz
也可以通过nginx官网下载
下载完成后将压缩包通过sftp工具上传至服务器。
#解压
tar -zxvf nginx-1.16.1.tar.gz -C /usr/local/soft
3、安装nginx
#进入nginx目录
cd /usr/local/soft
# 创建安装目录
mkdir nginx
#进入源码目录,进行编译安装
cd nginx-1.16.1
#编译 执行命令 考虑到后续安装ssl证书 添加两个模块 如不需要直接执行./configure即可
# 也可以添加参数,比如指定 --prefix指定安装目录
./configure --prefix=/usr/local/soft/nginx --with-http_stub_status_module --with-http_ssl_module
# 可以查看编译参数
./configure --help | more
#执行make命令(要是执行不成功请检查最开始安装的四个依赖有没有安装成功)
make
#执行make install命令
make install
make时失败
检查第1步时的组建是否全部安装。安装后重新 ./configure
4、启动nginx
cd /usr/local/soft/nginx/sbin
# 默认配置文件启动
./nginx
# 指定配置文件启动
./nginx -c /usr/local/soft/nginx/conf/nginx.conf
5、关闭nginx
#方式一
./nginx -s quit
#方式二,先查出nginx进程id,再使用kill命令强制杀掉进程。
ps -ef|grep nginx
kill pid
6、重启nginx
要正常停止并重新启动Nginx和相关进程,使用下列命令:
./nginx -s reload
7、检测nginx的配置文件是否正确
./nginx -t
# 检测指定的配置文件
./nginx -t -c /usr/local/soft/nginx/conf/nginx.conf
二、Nginx配置
1、反向代理
server {
listen 80;
server_name ip;
location / {
proxy_pass http://ip:9601;
}
}
保存之后,重启nginx
nginx -s reload
改变访问的端口:
# 原来访问:
http://ip:9601/test/get
# 切换为:80端口可以省略
http://ip:80/test/get
2、负载均衡
1、Nginx负载均衡策略
轮询(默认)
● 含义,每个请求按顺序分配到各个后台服务器中,是默认的负载均衡方式;
● 适用场景:后台机器性能配置一致的情况下。 集群内的机器可以自动管理(恢复和剔除)。适合静态文件服务器;
● 文件配置
upstream jenkins_nodes {
server ip:9601;
server ip:9602;
}
server {
listen 80;
server_name ip;
location / {
proxy_pass http://jenkins_nodes;
}
}
保存之后,重启nginx
# 原来访问:
http://ip:9601/test/getPort
# 切换为:
http://ip:80/test/getPort
请求两次,一次返回的端口值为 9601,一次返回的端口值为 9602。
权重(weight)
● 含义:weight和访问比率成正比,数字越大,分配得到的流量越高;
● 适用场景:后端服务器性能差异大的情况下使用;
● 文件配置
upstream jenkins_nodes {
server ip:9601 weight=2;
server ip:9602 weight=1;
}
当所有节点的 weight=1 时,与轮询效果一致。
IP_hash(固定分发)
● 含义:根据请求者IP的hash值将请求发送到后台服务器中,可以保证来自同一ip的请求被打到固定的机器上;将客户端的IP地址用作散列键,以确定应该为客户端的请求选择服务器组中的哪个服务器。此方法可确保来自同一客户端的请求将始终定向到同一服务器,除非此服务器不可用。
● 适用场景:服务器业务分区、业务缓存(非分布式缓存)、解决session共享问题。
● 文件配置
upstream jenkins_nodes {
ip_hash;
server ip:9601;
server ip:9602;
}
least_conn(最小连接数)
● 含义:在连接负载最小的情况下,nginx会尽量避免使用过多的请求来过载繁忙的应用程序服务器,而将新的请求分发给不太繁忙的服务器。
upstream jenkins_nodes {
least_conn;
server ip:9601;
server ip:9602;
}
2、关键字
down 关键字
用来标识某台服务器不参与负载均衡,该状态的使用场景是某台服务器需要停机维护时设置为down,或者发布新功能时。
upstream demo {
server ip:9601;
server ip:9602 down;
server ip:9603;
}
表示 ip:9602 节点不可用,不参与负载均衡。
backup 关键字
用来标识将该服务器视作备份服务器,当主服务器不能工作时,备份服务器会开启工作。
upstream demo {
server ip:9601;
server ip:9602;
server ip:9603 backup;
server ip:9604 down;
}
表示 ip:9603 为备份服务器,ip:9601 与 ip:9602 为主服务器,当这两台服务器故障不可用时,备份服务器会开启工作,当主服务器任意一台恢复工作时,备份服务器处于待命状态。
max_conns 关键字
max_conns = number; 用来设置最大活动链接数,当设置为 0 时,标识不限制最大活动链接。可以根据具体服务器性能来设定max_conns 的值,它所起到的作用是:防止服务器活动链接过多而导致服务器超出最大承载引起宕机的问题。
upstream demo {
server ip:9601 max_conns=512;
server ip:9602 max_conns=1024;
server ip:9603 backup;
server ip:9604 down;
}
max_fails 和 fail_timeout 关键字
max_fails 和 fail_timeout 是配合使用的,max_fails = number 是指:设置允许请求代理服务器最大的失败次数。 fail_timeout 是指:代理服务器在经过 max_fails =number 次失败后,服务器暂停的时间,单位为秒,默认10秒。
upstream demo {
server ip:9601 max_conns=1024 max_fails=3 fail_timeout=30;
server ip:9602 max_conns=1024 max_fails=3 fail_timeout=30;
server ip:9603 backup;
server ip:9604 down;
}
如果2个主节点 ip:9601 和 ip:9602 被请求时,均达到了最大失败次数3次,则两个主服务器均会暂停30秒【之前的三次请求由代理服务器完成正常响应】,也就是说在这30秒内,无法访问主服务器,如果30秒后主服务器恢复正常,则主服务器继续工作,如果30秒依旧无法正常工作,则继续由备份服务器工作。