在现代 Web 应用架构中,Nginx反向代理 是实现高性能、高可用服务的关键组件。而故障转移(Failover)机制则能确保当某台后端服务器宕机时,用户请求仍能被正常处理,从而提升系统的稳定性与用户体验。
本教程将手把手教你如何使用 Nginx 配置反向代理并实现简单的故障转移功能,即使你是运维新手(“小白”),也能轻松上手!
什么是反向代理与故障转移?
反向代理:Nginx 作为客户端和后端服务器之间的中介,接收用户请求并转发给内部服务器,再将响应返回给用户。这可以隐藏真实服务器、提升安全性,并支持负载均衡。
故障转移:当某台后端服务器不可用(如宕机、网络中断)时,Nginx 能自动将请求转发到其他健康的服务器,避免服务中断。
准备工作
你需要:
- 一台安装了 Nginx 的服务器(Linux 系统,如 Ubuntu/CentOS)
- 至少两台后端 Web 服务器(例如运行着相同应用的两台机器,IP 分别为 192.168.1.10 和 192.168.1.11)
- 基本的命令行操作能力
配置 Nginx 实现故障转移
编辑 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default),添加如下内容:
upstream backend { server 192.168.1.10:80 max_fails=3 fail_timeout=30s; server 192.168.1.11:80 max_fails=3 fail_timeout=30s;}server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }} 代码说明:
upstream backend定义了一个名为backend的服务器组。max_fails=3表示在fail_timeout(30秒)内,如果某台服务器连续失败3次,Nginx 就会将其标记为“不可用”。- 一旦某台服务器被标记为不可用,Nginx 会自动将后续请求转发给组内其他健康服务器,实现故障转移。
- 默认使用轮询(Round Robin)方式进行负载均衡。
测试故障转移是否生效
1. 启动所有后端服务器和 Nginx。
2. 使用浏览器或 curl 访问你的域名:
curl http://example.com
3. 手动停止其中一台后端服务器(如 192.168.1.10 上的服务)。
4. 再次访问,如果页面仍能正常加载,说明 Nginx 已成功将请求转发到另一台服务器——高可用架构初步实现!
进阶建议
为了构建更健壮的系统,你可以:
- 增加健康检查脚本(如使用
nginx-plus或第三方模块) - 结合 Keepalived 实现 Nginx 本身的高可用(双主/主备)
- 使用 DNS 或云服务商的负载均衡器作为前置层
总结
通过简单的 Nginx 配置,我们就能实现基本的Nginx反向代理与故障转移功能,大幅提升 Web 服务的可靠性。这种基于软件的高可用架构成本低、部署快,是中小企业和开发者首选的方案。同时,配合合理的负载均衡策略,还能有效分摊流量压力,保障用户体验。
现在,就动手试试吧!你的网站离“永不宕机”又近了一步!
