Nginx反向代理+负载均衡到网关+动静分离

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显然是必不可少的,主要运用其反向代理、负载均衡、动静分离等特性。

  • 13
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Nginx是一款常用的Web服务器软件,也可以用作反向代理负载均衡器。反向代理是指Nginx作为一个中间服务器,接收客户端的请求并将其转发给后端的服务器处理,然后将响应返回给客户端。 负载均衡是指将客户端请求分发到多个后端服务器上,以平衡服务器的负载。Nginx通过使用不同的负载均衡算法,如轮询、IP哈希、最少连接等,来决定将请求发送给哪个后端服务器。 配置Nginx作为反向代理负载均衡器需要进行一些设置。首先,你需要在Nginx配置文件中定义后端服务器的地址和端口,并设置相应的负载均衡策略。例如: ```nginx http { upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; server_name mywebsite.com; location / { proxy_pass http://backend; } } } ``` 在上述配置中,`upstream`指令定义了后端服务器的地址,在这里我们指定了三个后端服务器。`server`块中的`location`指令指定了代理转发的路径,`proxy_pass`指令将请求转发给定义的`upstream`。 这样配置之后,当有客户端请求到达Nginx时,Nginx会根据定义的负载均衡策略将请求转发给后端服务器,并将后端服务器的响应返回给客户端。 这就是Nginx反向代理负载均衡的基本概念和配置方法。希望对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值