Nginx
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理server。其特点是占有内存少。并发能力强,其并发能力确实在同类型的网页server中表现较好。
Nginx的作用
- 反向代理:
正向代理
正向代理是一个位于客户端和原始服务器之间的代理服务器,为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定目标原始服务器。然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端。
主要区别: 屏蔽客户端信息
反向代理
客户端向反向代理的命名空间中的内容发送普通请求,接着反向代理将推断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。
主要区别: 屏蔽内网服务器信息
- 负载均衡:
当请求过多,单个服务器难以负荷时,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上。
- 动静分离:
为了加快网站的解析速度,可以吧动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力
Nginx的配置
# 进入nginx目录
cd /mydata/nginx/conf/
nginx.conf 文件为主配置文件
nginx.conf配置文件结构
nginx.config文件对应的http块
include /etc/nginx/conf.d/*.conf;
主要是配置server块
意思是 载入了 该路径下的.conf文件
所以我们需要去conf.d文件夹下新建配置
新建gulimall.conf配置文件
修改server_name 代表 接收以gulimall.com为host头的请求
注意 gulimall.com 映射的域名是虚拟机的ip
修改location 代表 将以gulimall.com为host头的请求转发给 http://192.168.56.1:10000(localhost)
整体流程
但是之前的配置直接转发到各个微服务 需要转发给网关
在http块配置上游服务器
代表本机的网关地址 (localhost)如果有多个网关 可以配置多个server
将gulimall.com 为host的请求转发给上流服务器(网关)
配置网关
- id: gulimall_host_routeuri: lb://gulimall-productpredicates:- Host=**.gulimall.com
以gulimall为host的请求负载均衡给gulimall-product
但是会失败
nginx反向代理host信息丢失问题
Nginx反向代理给网关的时候 会丢失请求的host的信息(实际上不止这一个)
所以网关断言匹配不上
解决 server块新增
proxy_set_header Host $host;
配置
Nginx中负载均衡的分配方式
(1)轮询(默认)
每个请求按照时间顺序逐一分配到不同后端服务器中去,挂了的服务器会被自动剔除。
(2)weight
weight代表权重,默认为1,权重越高,被分配的客户端请求会越多。
upstream myserver{server 1.12.34.101:8080 weight=10;server 1.12.34.101:8081 weight=10;
}
(3)ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream myserver{ip_hash;server 1.12.34.101:8080;server 1.12.34.101:8081;
}
(4)fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream myserver{server 1.12.34.101:8080;server 1.12.34.101:8081;fair;
}
动静分离的实现
/static/ 开头的路径 都映射到 /usr/share/nginx/html 下的静态资源