Nginx就是反向代理服务器,而客户端直接访问Tomcat原始服务器是正向代理。
1.Nginx可以作为静态web服务器来部署静态资源。这里所说的静态资源是指在服务端真实存在,并且能够直接展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源。
2.相对于Tomcat,Nginx处理静态资源的能力更加高效,所以在生产环境下,一般都会将静态资源部署到Nginx中。
3.Nginx的特点
(1)跨平台:Nginx 可以在大多数 Unix like OS编译运行,而且也有Windows的移植版本。
(2)配置简单,容易上手。
(3)非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型)
(4)事件驱动:通信机制采用epoll模型,支持更大的并发连接。
(5)master/worker结构:一个master进程,生成一个或多个worker进程
(6)内存消耗小:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)
(7)成本低廉:Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币
(8)内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
(9)节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
(10)稳定性高:用于反向代理,宕机的概率微乎其微
(11)nginx代理和后端web服务器间无需长连接;
(12)接收用户请求是异步的,即先将用户请求全部接收下来,再一次性发送后后端web服务器,极大的减轻后端web服务器的压力
(13)发送响应报文时,是边接收来自后端web服务器的数据,边发送给客户端的
(14)网络依赖型低。NGINX对网络的依赖程度非常低,理论上讲,只要能够ping通就可以实施负载均衡,而且可以有效区分内网和外网流量
(15)支持服务器检测。NGINX能够根据应用服务器处理页面返回的状态码、超时信息等检测服务器是否出现故障,并及时返回错误的请求重新提交到其它节点上
cd /usr/local/nginx/conf/ vim nginx.conf
这里代理了两个服务器
worker_processes 1;
events {
worker_connections 1024;
}
http {
default_type text/html;
server {
listen 90;
server_name localhost;
location / {
proxy_pass http://192.168.136.160:22122;
root html;
index index.html index.htm;
}
}
server {
listen 91;
server_name localhost;
location / {
proxy_pass http://192.168.136.160:8888;
}
}
}
二.重载并启动
#进入nginx目录 cd /usr/local/nginx/sbin #执行重载命令 ./nginx -s reload三.负载均衡
集群: 多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现。
负载均衡器: 将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理
#upstream指令可以定义一组服务器
upstream targetserver{
server 192.168.200.201:8080;
server 192.168.200.201:8081;
}
server {
listen 8080;
server_name localhost;
location / {
proxy_pass http://targetserver;
}
}
二.重新加载nginx配置文件,并启动
nginx -s reload四.负载均衡策略
| 名称 | 说明 | 特点 |
|---|---|---|
| 轮询 | 默认方式 | |
| weight | weight权重方式 | 根据权重分发请求,权重大的分配到请求的概率大 |
| ip_hash | 依据ip分配方式 | 根据客户端请求的IP地址计算hash值, 根据hash值来分发请求, 同一个IP发起的请求, 会发转发到同一个服务器上 |
| least_conn | 依据最少连接方式 | 哪个服务器当前处理的连接少, 请求优先转发到这台服务器 |
| url_hash | 依据url分配方式 | 根据客户端请求url的hash值,来分发请求, 同一个url请求, 会发转发到同一个服务器上 |
| fair | 依据响应时间方式 | 优先把请求分发给处理请求时间短的服务器 |
权重配置
#upstream指令可以定义一组服务器
upstream targetserver{
server 192.168.200.201:8080 weight=10;
server 192.168.200.201:8081 weight=5;
}



