Nginx的使用说明
一、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; }
- nginx location语法使用说明
- nginx Windows版使用说明
- Nginx性能优化CPU参数worker_cpu_affinity使用说明
- nginx服务器详细安装过程(使用yum 和 源码包两种安装方式,并说明其区别)
- nginx location 配置阐述优先级别使用说明
- Nginx的 http_image_filter_module 模块使用说明
- nginx-rrd监控nginx 使用说明
- nginx使用配置说明
- nginx 内置变量使用说明及具体意义
- nginx服务器详细安装过程(使用yum 和 源码包两种安装方式,并说明其区别)
- nginx location 配置阐述优先级别使用说明
- HTTP和反向代理服务器-nginx在项目中的简单使用说明
- nginx的 CPU参数worker_processes和worker_cpu_affinity使用说明
- 【T电商 3】Nginx的Http(图片)服务器配置+ftp上传使用说明
- 【Ts 3】Nginx的Http(图片)服务器配置+ftp上传使用说明
- nginx服务器详细安装过程(使用yum 和 源码包两种安装方式,并说明其区别)
- nginx服务器详细安装过程(使用yum 和 源码包两种安装方式,并说明其区别)
- 关于nginx性能优化CPU参数worker_cpu_affinity使用说明
- Nginx教程(二)-- 使用说明以及注意事项
- nginx服务器详细安装过程(使用yum 和 源码包两种安装方式,并说明其区别)