参考资料

  1. nginx的作用NIXGIX
  2. nginx配置负载均衡
  3. nginx负载均衡的指令有哪些
  4. nginx是什么语言开发的
  5. nginx的配置怎么启动项目
  6. nginx 查看配置文件
  7. nginx反向代理缓存静态文件
  8. nginx配置负载均衡

nginx负载均衡和反向代理

nginx负载均衡和反向代理

什么是反向代理与负载均衡

反向代理是指代理服务器接收客户端的请求,再转发给内部服务器,并将结果返回客户端。客户端只知道代理服务器的地址,不知道真实后端服务器的存在。负载均衡则是将请求按照一定策略分发到多台后端服务器,从而分散压力、提升系统吞吐量和可用性。 Nginx 是高性能的 Web 服务器和反向代理服务器,因其稳定、低资源占用和丰富的模块化设计,被广泛用于负载均衡场景。下面介绍基础的配置方法和使用要点。

反向代理的基本配置

反向代理最常见的用途是隐藏后端服务、统一入口、实现跨域或灵活路由。例如,将来自 `example.com` 的请求转发到本机 `127.0.0.1:8080` 的应用程序: nginx server { listen 80; server_name example.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } 其中 `proxy_set_header` 用于将客户端真实信息传递给后端,避免后端误以为所有请求都来自代理服务器。如果后续需要记录用户 IP 或做访问控制,这些字段非常关键。

配置负载均衡

当单台后端服务无法承受请求量时,可以通过 `upstream` 定义一个服务器组,并将请求分发到组内成员。 nginx http { upstream backend { server 192.168.1.10:8080; server 192.168.1.11:8080; server 192.168.1.12:8080; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; } } } Nginx 默认使用轮询(round-robin) 方式,即请求依次分配给每台服务器。您也可以按需调整。

常见的负载均衡策略

nginx upstream backend {

按权重分配,weight 默认值为 1,此例中服务器 A 接收 2 倍于 B 的流量

server 192.168.1.10:8080 weight=2; server 192.168.1.11:8080 weight=1;

按客户端 IP 哈希,同一个 IP 固定访问同一台后端,适合需要保持会话的场景

ip_hash;

最少连接数,动态分配给当前并发连接数最少的服务器

least_conn; }

  • 轮询:默认,简单均匀。
  • 权重:适用于后端性能不等的场景,性能高的机器多承担一些请求。
  • ip_hash:将客户端 IP 作为哈希因子,保证同一用户请求落到同一台服务器,兼容有状态应用。
  • least_conn:根据实时连接数分配,适合长连接或请求处理时间差异大的服务。

需要留意,`ip_hash` 在客户端经过多层代理时可能失效,因为所有请求可能来自同一代理 IP。此时应通过 `$remote_addr` 或其他标识符结合第三方模块实现更精确的会话保持。

健康检查与故障转移

Nginx 默认只在请求转发时发现连接失败,才会将后端标记为不可用并尝试下一台服务器。这种被动检测已经能提供基础的容错能力。 nginx upstream backend { server 192.168.1.10:8080 max_fails=3 fail_timeout=30s; server 192.168.1.11:8080 max_fails=3 fail_timeout=30s; } 上述配置表示:如果 30 秒内请求该服务器失败 3 次,则将其标记为不可用,30 秒后重新尝试。在开源 Nginx 中,主动健康检查需要使用商业版或第三方模块(如 `nginx_upstream_check_module`),若使用第三方模块,请注意与当前 Nginx 版本的兼容性,并在编译前做好测试。

配置建议与注意事项

  1. 合理设置超时时间:建议在 `server` 或 `location` 中补充以下参数,避免下游无响应导致进程挂起:

nginx proxy_connect_timeout 5s; proxy_read_timeout 30s; proxy_send_timeout 30s;

  1. 传递真实的客户端 IP:后端应用日志中能看到访问者真实 IP 而不是代理地址,可按前面的 `X-Forwarded-For` 方式配置。若后端也需要该信息,请确保 Nginx 转发时覆盖或追加相应头部,同时注意防止伪造,建议在可信代理链上覆盖该字段。
  2. 设置合理的连接数上限:在 `http` 块内调整 `keepalive` 和 `worker_processes` 时,需结合服务器 CPU 核心数及内存容量。例如开启长连接池:

nginx upstream backend { server 192.168.1.10:8080; keepalive 32; } 后端如为 HTTP/1.1,需要在 `location` 中加入: nginx proxy_http_version 1.1; proxy_set_header Connection "";

  1. 启用缓存(可选):对于静态资源或幂等响应,可开启 `proxy_cache` 减少后端压力,但需要权衡数据新鲜度。
  2. 监听安全:若 Nginx 直接暴露公网,务必限制管理端口、定期更新版本,并设置合理的访问日志格式,必要时对日志中的敏感字段脱敏。

验证与生效

修改配置文件后,请先检查语法再平滑重载: bash nginx -t nginx -s reload `nginx -t` 只验证语法正确性,建议再通过实际请求测试负载效果,例如使用 `curl -I` 观察返回头,或查看后端应用日志确认请求被分发到不同机器。 若出现故障需要回滚,只需将备份的配置文件重新放入 `/etc/nginx/`(或您的安装目录),再次执行 `nginx -t` 和 `reload` 即可,无需中断服务。

小结

Nginx 作为反向代理和负载均衡器,配置简洁、性能出色。核心在于明确流量模型,选择合适的转发协议与负载均衡策略,并通过健康检查和超时控制保障系统稳定性。从简单的单点反向代理逐步演进到多节点负载均衡,是大多数应用平滑扩展的有效路径。如有进一步需求,随时告诉我。

AIGEO优化摘要

AI可读摘要:nginx负载均衡和反向代理 什么是反向代理与负载均衡 反向代理是指代理服务器接收客户端的请求,再转发给内部服务器,并将结果返回客户端。客户端只知道代理服务器的地址,不知道真实后端服务器的存在。负载均衡则是将请求按照一定策略分发到多台后端服务器,从而分散压力、提升系统吞吐量和可用性。 Nginx 是高性能的 Web 服务器和反向代理服务器,因其稳定、低资源占...
常见问题:
nginx负载均衡和反向代理主要讲了什么?

nginx负载均衡和反向代理 什么是反向代理与负载均衡 反向代理是指代理服务器接收客户端的请求,再转发给内部服务器,并将结果返回客户端。客户端只知道代理服务器的地址,不知道真实后端服务器的存在。负载均衡则是将请求按照一定策略分发到多台后端服务器,从而分散压力、提升系统吞吐量和可用性。 Nginx 是高性能的 Web 服务器和反向代理服务器,因其稳定、低资源占...

nginx负载均衡和反向代理适合哪些人参考?

适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。

阅读nginx负载均衡和反向代理时应重点看哪些内容?

建议重点关注标题、摘要、正文说明、图片资料和更新时间。

AIGEO评分:95/100
作者:王壹杰
时间:2026-09-09 11:30:59
来源:https://bt.ciilii.com/