1. 什么是 Nginx?
Nginx是一款高性能的HTTP服务器,其特点是占有内存少,并发能力强,负载均衡、反向代理、处理静态文件优势大,通常配合Tomcat使用实现动静分离
2. Dokcer 配置 Nginx
docker中的nginx配置文件对应位置
- /etc/nginx/nginx.conf 主配置文件,全局块、events块、http块
- /etc/nginx/conf.d 文件夹下的所有附加配置文件,可以单独配置sever块
docker配置nginx方法
- 创建映射目录,获取nginx.conf文件,此文件中包含server配置
mkdir -p /home/app/nginx/{conf,conf.d,html,logs}
cd /home/app/nginx/conf
wget https://trac.nginx.org/nginx/export/HEAD/nginx/conf/nginx.conf
- 启动容器,映射相关目录和配置文件
docker run --privileged=true --name mynginx -p 80:80 \
-v /home/app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/app/nginx/conf.d:/etc/nginx/conf.d \
-v /home/app/nginx/logs:/var/log/nginx \
-v /home/app/nginx/html:/usr/share/nginx/html \
-d nginx:latest
3. 负载均衡
针对的是集群,即对同一服务部署多个服务器以分担压力
假设后台服务器如下
- 反向代理nginx服务器:xxx.xxx.xxx.xxx:80 www.codfish.com
- 后台tomcat服务器:127.0.0.1:8080;127.0.0.1:8081;127.0.0.1:8082
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream tomcats {
ip_hash;
server xxx.xxx.xxx.xxx:8080;
server xxx.xxx.xxx.xxx:8081;
server xxx.xxx.xxx.xxx:8082;
}
server {
listen 80;
server_name www.codfish.com;
location / {
proxy_pass http://tomcats;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
- 轮询:请求按照时间顺序分配到不同的服务器上,默认方式
- 权重:按重要性合理分配各服务器权重,weight=?
- ip哈希:根据访问ip的hash结果分配固定服务器,ip_hash
- 最少连接:将请求优先分配到连接数最少的服务器上,least_conn
- fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配
Nginx 和 Ribbon 两种负载均衡的区别:作用位置不同
Ribbon:本地负载均衡
在调用服务接口时,会在注册中心获取服务列表,然后缓存在本地,在本地实现远程调用。
Nginx:服务器负载均衡
客户端所有的请求都会交给Nginx服务器,然后由Nginx实现请求的分发。