定义
Nginx 的反向代理功能允许将前端发送的动态请求转发到后端服务器(如 Spring Boot 项目内嵌的 Tomcat)。通过配置负载均衡,Nginx 可以将请求分配到多个后端服务器,从而提高系统的可用性和性能。
优势
使用 Nginx 进行反向代理和负载均衡的优势包括:
- 提高访问速度:通过缓存静态资源和减少后端服务器的负载,提升响应速度。
- 负载均衡:将大量请求按照指定策略分配给集群中的每台服务器,提高系统可用性。
- 安全性:后端服务器的接口不会直接暴露在公网,降低了安全风险。
- 高可用性:通过配置多个后端服务器,即使部分服务器故障,也不会影响整体服务。
配置方式
反向代理
在 nginx.conf
文件的 server
-> location
块中配置 proxy_pass
属性,即可将前端的某些接口地址转发到后端。例如:
nginx复制
1 | server { |
配置完成后,前端发送的请求 http://localhost/api/employee/login
会被 Nginx 转换为 http://localhost:8080/admin/employee/login
并转发到后端。
负载均衡
负载均衡本质上是基于反向代理实现的,通过将请求分配到多个后端服务器来提高性能和可用性。例如:
1 | # 声明一组服务器,可以在此指定负载均衡策略 |
配置优化
负载均衡策略
Nginx 支持多种负载均衡策略,包括轮询(默认)、最少连接数和加权轮询。例如:
1 | upstream webservers { |
weight
:设置服务器的权重,默认值为 1。权重越高,分配到的请求越多。
健康检查
Nginx 支持简单的健康检查机制,可以自动移除故障服务器。例如:
1 | upstream webservers { |
backup
:标记为备用服务器,仅在其他服务器不可用时使用。
会话保持
在某些场景下,可能需要将同一用户的请求转发到同一后端服务器(会话保持)。可以通过 ip_hash
实现:
1 | upstream webservers { |
SSL/TLS 支持
如果需要支持 HTTPS,可以在 server
块中配置 SSL 证书(以本站为例,需要先在域名提供商处申请www.penciy.com域名的证书,然后下载为nginx格式,部署到指定目录后即可通过nginx代理到动态资源):
1 | server { |
__END__