您的位置:首页 > 运维架构 > Nginx

Nginx的使用说明

2020-07-26 19:15 134 查看

一、upstream 指令参数

1.upstream 指令参数 max_conns
限制每台server的连接数,用于保护避免过载,可起到限流作用。

upstream tomcats {
server 192.168.1.3:8080 max_conns=2;
server 192.168.1.4:8080 max_conns=2;
server 192.168.1.5:8080 max_conns=2;
}

2.upstream 指令参数 slow_start
缓慢加载,真实服务在启动后的指定时间后,才会被允许请求

upstream tomcats {
server 192.168.1.1:8080 weight=6 slow_start=60s;
server 192.168.1.3:8080 weight=2;
server 192.168.1.4:8080 weight=2;
}

注意
该参数不能使用在 hash 和 random load balancing 中。
如果在 upstream 中只有一台 server,则该参数失效。

3.upstream 指令参数 down、backup
(1)down 用于标记服务节点不可用:

upstream tomcats {
server 192.168.1.3:8080 down;
server 192.168.1.4:8080 weight=1;
server 192.168.1.5:8080 weight=1;
}

(2)backup 表示当前服务器节点是备用机,只有在其他的服务器都宕机以后,自己才会加入到集群中,被用户访问到:

upstream tomcats {
server 192.168.1.3:8080 backup;
server 192.168.1.4:8080 weight=1;
server 192.168.1.5:8080 weight=1;
}

注意 backup 参数不能使用在 hash 和 random load balancing 中。
4.upstream 指令参数 max_fails、fail_timeout
例如:

max_fails=2 fail_timeout=15s

max_fails :表示失败几次,则标记server已宕机,剔出上游服务。
fail_timeout :表示失败的重试时间。
上面配置代表在15秒内请求某一server失败达到2次后,则认为该server已经挂了或者宕机了,随后再过15秒,这15秒内不会有新的请求到达刚刚挂掉的节点上,而是会
运作正常的server,15秒后会再有新请求尝试连接挂掉的server,如果还是失败,重复上一过程,直到恢复。
5.使用Keepalive 指令 提高吞吐量

upstream tomcats {
server 192.168.1.190:8080;
keepalive 32;
}
server {
listen 80;
server_name www.tomcats.com;
location / {
proxy_pass http://tomcats;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}

二、负载均衡

1.负载均衡 ip_hash
(1)原理
将请求ip hash处理,然后与真实服务器台数取模,得到的相应的结果,通过结果判断将IP分配给哪台服务器
(2)作用
ip_hash 可以保证用户访问可以请求到上游服务中的固定的服务器,前提是用户ip没有发生更改。
(3)使用ip_hash的注意点
不能把后台服务器直接移除,只能标记 down .
配置样例

upstream tomcats {
ip_hash;
server 192.168.1.3:8080;
server 192.168.1.4:8080 down;
server 192.168.1.5:8080;
}

2.负载均衡 url_hash 与 least_conn
(1)url_hash
根据每次请求的url地址,hash后访问到固定的服务器节点。
(2)least_conn
每次请求,都将请求分配给连接数最少的服务器
配置样例

upstream tomcats {
# url hash
hash $request_uri;
# 最少连接数
# least_conn
server 192.168.1.173:8080;
server 192.168.1.174:8080;
server 192.168.1.175:8080;
}
server {
listen 80;
server_name www.tomcats.com;
location / {
proxy_pass http://tomcats;
}
}

三、Nginx的缓存

概览

1.概念
(1)浏览器缓存
加速用户访问,提升单个用户(浏览器访问者)体验,缓存在本地
(2)Nginx缓存
缓存在nginx端,提升所有访问到nginx这一端的用户
提升访问上游(upstream)服务器的速度
用户访问仍然会产生请求流量

2. 控制浏览器缓存

location /static {
alias /home/directory;
#设置浏览器中缓存过期时间为10秒
# expires 10s;
#设置浏览器中缓存过期时间为 晚上22点30分
# expires @22h30m;
#设置浏览器中缓存过期时间为 当前时间前1小时
# expires -1h;
#不使用缓存
# expires epoch;
#关闭nginx的缓存控制,会使用浏览器默认的缓存控制
# expires off;
#使用最大的过期时间
expires max;
}

访问测试:

cache.html文件实际放于/home/directory目录中

3.Nginx的反向代理缓存

对上游服务器的静态资源进行缓存

upstream tomcats {
# url hash
hash $request_uri;
# 最少连接数
# least_conn
server 192.168.1.3:8080;
server 192.168.1.4:8080;
server 192.168.1.5:8080;
}

# proxy_cache_path 设置缓存目录
# keys_zone 设置共享内存以及占用空间大小
# max_size 设置缓存大小
# inactive 超过此时间则被清理
# use_temp_path 临时目录,使用后会影响nginx性能
proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=8h use_temp_path=off;

server {
listen 80;
server_name www.tomcats.com;

# 启用缓存,和keys_zone一致
proxy_cache mycache;
# 针对200和304状态码缓存时间为8小时 p
roxy_cache_valid 200 304 8h;

location / {
proxy_pass http://tomcats;
}
}

四、使用Nginx配置HTTPS域名证书

1. 安装SSL模块
要在nginx中配置https,就必须安装ssl模块,也就是: http_ssl_module 。
操作:
(1)进入到nginx的解压目录: /home/software/nginx-1.16.1
(2)新增ssl模块(原来的那些模块需要保留)

./configure
--prefix=/usr/local/nginx
--pid-path=/var/run/nginx/nginx.pid
--lock-path=/var/lock/nginx.lock
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--with-http_gzip_static_module
--http-client-body-temp-path=/var/temp/nginx/client
--http-proxy-temp-path=/var/temp/nginx/proxy
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi
--http-scgi-temp-path=/var/temp/nginx/scgi
--with-http_ssl_module

如果已经安装过http_ssl_module,无需再次安装
(3)编译和安装

make
make install

2. 配置HTTPS
(1)把ssl证书 *.crt 和 私钥 *.key 拷贝到 /usr/local/nginx/conf 目录中
(2)新增 server 监听 443 端口:

server {
listen 443;
server_name www.imoocdsp.com;
# 开启ssl
ssl on;
# 配置ssl证书
ssl_certificate 1_www.test.com_bundle.crt;
# 配置证书秘钥
ssl_certificate_key 2_www.test.com.key;
# ssl会话cache
ssl_session_cache shared:SSL:1m;
# ssl会话超时时间
ssl_session_timeout 5m;
# 配置加密套件,写法遵循 openssl 标准
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;

location / {
proxy_pass http://tomcats/;
index index.html index.htm;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: