Nginx反向代理+负载均衡到网关+动静分离
NginxNginx (engine x) 是一个高性能的HTTP和反向代理web服务器,在微服务架构中,Nginx作为客户端请求的第一层中间件,通常将请求转发代理给网关。一般Nginx运用的主要场景有反向代理、负载均衡、动静分离等,在微服务架构如下:反向代理为了安全起见,一般我们不会将应用服务器内网地址暴露给外界,此时就让Nginx作为代理来访问内网地址。而Nginx的IP地址可以作为公网IP暴
Nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,在微服务架构中,Nginx作为客户端请求的第一层中间件,通常将请求转发代理给网关。一般Nginx运用的主要场景有反向代理、负载均衡、动静分离等,在微服务架构如下:
反向代理
为了安全起见,一般我们不会将应用服务器内网地址暴露给外界,此时就让Nginx作为代理来访问内网地址。而Nginx的IP地址可以作为公网IP暴露给外界使用,这样就屏蔽了内网服务器信息。例如:
- 首先在本机修改hosts文件
路径为:C:\Windows\System32\drivers\etc\hosts
添加以下内容:
# 192.168.31.130是远程Nginx服务器地址
192.168.31.130 xfmall.com
当客户端输入 xfmall.com时,通过本地域名映射规则,解析出Nginx服务器地址
- 设置Nginx反向代理
修改nginx.conf的server段
listen 80;
server_name xfmall.com;
location / {
#代理给内网服务地址
proxy_pass http://192.168.31.130:9000;
}
这样,我们就实现了Nginx的反向代理,是不是很简单呢?
负载均衡到网关
在实际的微服务架构中,Nginx代理请求后,为了方便各个微服务的统一管理和访问,还需要将代理转给网关(gateway)由网关来统一将请求路由给各个微服务,这一就不用给每个微服务都配置反向代理。
- 配置负载均衡
在nginx.conf中的http段添加:
#负载均衡
upstream xfmall{
server 192.168.1.86:88; #网关地址
}
- 修改server段
location / {
#设置host header,nginx在代理给网关时会丢掉host_header
proxy_set_header Host $host;
proxy_pass http://xfmall;
}
至此,我就完成Nginx的反向代理与负载均衡
动静分离
一般为了提升程序的性能,通常借助Nginx实现动静分离。动:动态请求,需经Java程序处理后响应的请求,比如SpringMVC处理,静:静态资源,比如css,js,jpg,文本等文件,我们可以将静态资源放到Nginx,而动态请求交给后端程序处理,这一分离开来,就会降低Tomcat服务器的负载,整体上提升程序的响应。整个流程如图:
- 将静态资源放到Nginx
cd /mydata/nginx/html/
,Nginx的静态资源都在html目录下,接着通过远程传输工具将本地的index文件夹上传到远程Linux
vi nginx.conf
在原来的反向代理基础上,加入静态资源配置:
#静态资源配置
location /static/ {
root /usr/share/nginx/html;
}
当请求以/static开始时,就会去找nginx下指定的静态资源。综上,我们就完成了Nginx的动静分离,借助Jmeter压测工具,我们会看到整个系统的响应时间以及吞吐量有了明显的提升。
总结
在高并发分布式系统中,为提升程序的性能,Nginx显然是必不可少的,主要运用其反向代理、负载均衡、动静分离等特性。
更多推荐
所有评论(0)