【抗击高并发】分布式系统架构 之 Nginx部署及应用
Nginx概念
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用Nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
轻量级:
- 从代码角度看:实现代码时,代码设计耦合性低;
- 轻量化:spring-core核心包不到1M,Nginx不到4M;
- 占用内存:占用内存特别少,可运行在小型机。
Nginx反向代理
Nginx反向代理技术:能够实现路径的自动切换,将客户端请求的虚拟路径转发到服务端本地磁盘路径,并相应相应内容。
说明:
- 当用户发出image.jt.com/2018/1.jpg时,首先将请求发往Nginx;
- 经过Nginx内部配置自动进行路径的切换为E:jt-upload/2018/1.jpg并且访问切换后的路径;
- 将返回的结果再次返回给浏览器,这时浏览器可以进行正常的展现。
Nginx部署、常用命令及多实例化
- Nginx部署:解压即可用,注意:
- 不要有中文路径;
- 不要放到系统盘(windows下)。
- 常用命令:在nginx的根目录中,执行cmd命令到命令提示框;
- 启动:start nginx
- 重启:nginx -s reload
- 停止:nginx -s stop
- Nginx多实例:
当启动Nginx时,一次启动会有2个Nginx进程.一个是主进程,一个是守护进程。当主进程意外停止时,这时守护进程会自动的启动一个主进程,保证服务正常启动。所以在任务管理器中关闭Nginx时,先关闭守护进程之后再关闭主进程。注意,占用较小的为守护线程。
Nginx配置
通过配置conf/nginx.conf文件实现反向代理和负载均衡;
Nginx反向代理实现
server:在server中配置反向代理服务器参数
listen:监听的端口号为80,为了让nginx生效,原因是用户请求的路径一般都不加端口号,只有80端口为可缺省的;
server_name:客户端浏览器输入的虚拟路径;
location:表示拦截后的处理;
root:若访问的是一个文件夹,则需要使用root字段;
proxy_pass:若访问的是个路径,则需要使用proxy_pass字段;若转发网络路径,转发是需要协议的,在路径前需要加上协议:http://
注意:若本机测试,需要修改hosts文件,添加需要代理的虚拟路径,推荐使用SwitchHosts;
Nginx负载均衡实现
负载均衡的三种常见策略:
- 轮询(默认):依次访问每台服务器,不常用,原因在于一般公司中考虑经济因素,每台服务器性能不一致,有好有坏;
- 权重(推荐):添加weight属性,属性值越大,访问的几率越大,但访问顺序固定;
- ip-hash:根据用户访问的ip地址进行hash计算,指定一台服务器绑定,每次该用户访问时,都访问绑定的服务器;问题在于容易产生session黏着问题,有严重的安全问题,不常用;若配置了ip_hash,其余均不生效;
备用机机制:添加backup属性,作用在于其他服务器响应响应不过来的时候,可以分担一部分压力,当其余服务器响应压力不大时,则不工作;
上线部署:将需要上线的服务器添加down属性,重启nginx;上线部署完成后,删除down属性,重启nginx即可;
步骤:
- 先修改Nginx配置文件,为上线的服务器添加down属性,让需要上线的服务器down掉;
- 应该将需要上线的服务停止;
- 之后将war包发布;
- 启动服务器;
- 将服务器还原回Nginx中:删掉down属性,nginx –s reload重启Nginx服务器。