CentOS 7.6.1810 安装配置 nginx 1.16.0
1、安装nginx依赖包
yum install -y pcre pcre-devel yum install -y openssl openssl-devel yum install -y zlib zlib-devel yum install -y gcc gcc-c++
2、创建目录并进入
mkdir -p /usr/local/nginx && cd /usr/local/nginx
3、下载t安装包
wget http://nginx.org/download/nginx-1.16.0.tar.gz
4、解压安装包
/usr/bin/tar -zxvf nginx-1.16.0.tar.gz
5、编译安装nignx 1.16.0
cd nginx-1.16.0 && ./configure --with-http_ssl_module
make && make install
6、设置软连接,启动并测试配置文件是否成功
ln -s /usr/local/nginx/sbin/nginx /sbin/ && nginx && nginx -t
7、开启防火墙端口和http协议
firewall-cmd --add-port=443/tcp firewall-cmd --add-port=80/tcp firewall-cmd --add-service=http
8、或者直接关闭防火墙
systemctl stop firewalld
service iptables stop
9、其它常用指令
/usr/local/nginx/sbin/nginx -s reload 重启nginx /usr/local/nginx/sbin/nginx -s stop 停止nginx /usr/local/nginx/sbin/nginx 启动ningx netstat -tunlp 查看端口占用(80;443) ps -ef |grep nginx 查看ningx进程 kill -QUIT ‘nginx主进程号’ 停止进程 kill TERM nginx主进程号 快速停止 kill -9 进程号 强制停止 kill -HUP nginx主进程号 平滑重启
10、编译时创建用户
groupadd nginx # 创建nginx组 useradd nginx -g nginx -s /sbin/nologin -M # 添加nginx用户并加入nginx组 --user=nginx # 编译时用户参数 --group=nginx # 编译时组参数 vim /usr/local/nginx/conf/nginx.conf # 编译安装完成以后,修改nginx.conf user nginx nginx;
11、其它参考资料
nginx负载均衡
nginx负载均衡策略
(1)轮询:轮流处理请求,每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器宕掉,自动剔除,剩下的继续轮询。
upstream myServer {
server 192.168.1.1:9090 down; //down 表示此节点不参与负载
server 192.168.1.1:6060 fail_timeout=10s max_fails=2; 10S内连接失败2次就认为这个服务器工作不正常
server 192.168.1.1:7070 backup; 当其他所有的非backup机器宕机时,才会请求backup机器
}
down 表示服务器永久停机,不参与负载
bakcup 表示服务器为备用服务器,当其他服务器全部停机时,请求才会发送到这里
fail_time 服务器会被认为停机的时长,默认为10s
max_fails 允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout fail_timeout与max_fails要关联使用,一台服务器在fail_timeout内出现了max_fails次失败,则认为这台服务器已经挂掉,然后在fail_timeout时间后会尝试重新连接。
nginx负载均衡的默认策略为轮询方式,在轮询中,如果服务器donw了,会自动剔除该服务器。
(2)权重:通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。
upstream myServer {
server localhost:8080???weight=2;?
server localhost:8082???backup;??
server localhost:8083???max_fails=3 fail_timeout=20s;?
}
权重方式可以与ip_hash和 least_conn结合使用。
(3)IP地址哈希(ip_hash):每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。
upstream myServer {
ip_hash;
server localhost:8080 weight=2;
server localhost:8081;
}
(4)最少连接(least_conn):web请求会被转发到连接数较少的服务器上,适合请求处理时间长短不一造成服务器过载的情况
upstream myServer {
least_conn;
server localhost:8080 weight=2;
server localhost:8081;
server localhost:8082 backup;
server localhost:8083 max_fails=3 fail_timeout=20s;??
}
(5)最短响应时间(fair):按照服务器端的响应时间来分配请求,响应时间短的优先分配。
upstream myServer {
server localhost:8080;
server localhost:8081;
server localhost:8082;
server localhost:8083;
fair;
}
(6)URL地址哈希(url_hash):按访问的url进行分配,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,造成不必要的多次下载。使用url_hash后同一url每次到达一台服务器,可以缓存资源,不会造成多次下载。
upstream myServer {
hash $request_uri;
server localhost:8080;
server localhost:8081;
server localhost:8082;
server localhost:8083;
}
【注】
Nginx proxy_pass后的url加不加/的区别
在nginx中配置proxy_pass时,若url中端口号后无内容,当在后面的url加上了/相当于是绝对根路径。则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。若端口号后有内容,则无论后面是否有/,都不会把location中匹配的路径部分代理走。