简介
客户端与服务端建立连接时,客户端的请求会先经过互联网访问网关,网关将请求传输给Nginx服务器,Nginx服务器再与应用服务器建立通信。
正向代理 类似于下图中的关系
当设备连接到路由器时,所有数据都需要通过路由器传输。设备发送的数据首先到达路由器,路由器作为网关,将数据转发到下一跳。因为路由器充当网络通信的关键节点,无法被绕开,因此路由器通常被称为 网关。在网络中,所有的请求和响应都必须通过这个网关传递,尤其是在隧道式代理的情况下,所有的流量都会通过网关进行转发。
在这种网络环境中,路由器不仅负责数据包的转发,还可以充当 代理服务器。这是一种隧道式代理,意味着所有数据(请求和响应)都必须经过路由器进行传递。由于所有的流量都要经过路由器处理,在高并发和大流量的情况下,路由器的性能可能成为瓶颈,导致 网络阻塞,影响整体通信速度和质量。
使用反向代理,也就是用 Nginx 充当代理服务器时,它也扮演着类似的角色,代理客户端的请求并将其转发给后端服务器。Nginx 作为代理服务器,不仅需要处理客户端请求,还需要管理后端服务器返回的数据。在隧道式代理的模式下,这可能导致性能瓶颈,特别是在高并发场景下,因为 Nginx 必须处理所有的请求和响应流量。
使用 LVS(Linux Virtual Server) ,一种内核级的负载均衡器。在使用 Nginx 反向代理时,可以使用不同的负载均衡模式,其中一种有效的方式是 DR 模型(Direct Routing),请求通过 Nginx 服务器,但返回的数据不必再经过 Nginx ,而是通过直接路由出网返回给客户端,这种方式减少了 Nginx 的负载,避免其成为性能瓶颈。
其他优化反向代理的技术:
1、Keepalive连接:Nginx 支持 HTTP Keepalive,可以在客户端与服务器之间保持长连接,减少TCP连接的开销,提升请求的响应速度
2、缓存策略:Nginx 支持强大的缓存功能,可以将静态资源或动态页面缓存到本地,减少后端服务器的压力,提升响应速度。
3、CDN(内容分发网络):Nginx 可以结合 CDN 使用,将静态内容分发到全球的 CDN 节点,减少服务器的负载并加快内容传输速度。
反向代理配置
反向代理 添加在 server-location块中 格式为:
proxy_pass [域名]
root 和 index 等详细访问信息无需添加在location中
location / {
listen 90;
server_name localhost;
location / {
proxy_pass https://www.baidu.com;
}
}
返回的结果如图
用户访问Nginx90端口时,Nginx会根据反向代理的规则,将内容拉取并返回给用户。 反向代理不一定支持https的代理(nginx中间劫持?)
Nginx在企业中的应用
传统公司系统架构
中小公司系统架构
Nginx 能够起到更多业务逻辑的作用,比如发送请求,替换URL,转发数据包,返回静态资源。 设立Nginx服务集群负载均衡分担处理请求的压力 故障转移,能将服务转移到另外的服务器 负载均衡