
一、反向代理解决什么问题Nginx 作为反向代理时客户端只访问 Nginx后端真实服务被隐藏在内网。它可以统一 TLS、压缩、日志、限流、静态资源缓存和路由转发。对于微服务系统入口层稳定非常重要不能让每个业务服务都直接暴露公网。能力作用常见配置路由转发按域名或路径分发server、location负载均衡分摊请求upstream健康保护故障节点降权max_fails、fail_timeout请求治理限流、超时、头透传limit_req、proxy_timeout二、基础反向代理配置最小配置通常包含upstream和proxy_pass。同时要正确透传 Host、客户端 IP 和协议否则后端日志、鉴权回调、跳转链接都可能出现错误。upstream order_api { server 10.0.1.11:8080 max_fails3 fail_timeout10s; server 10.0.1.12:8080 max_fails3 fail_timeout10s; } server { listen 80; server_name api.example.com; location / { proxy_pass http://order_api; 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; } }如果后端服务依赖真实客户端 IP应用应读取X-Forwarded-For同时只信任来自网关的头避免被公网请求伪造。三、负载均衡策略怎么选Nginx 默认使用轮询适合无状态服务。least_conn适合请求耗时差异大的接口能把新请求分给当前连接少的节点。ip_hash可以维持简单会话粘性但会影响故障切换和流量均衡现代系统更推荐把会话放到 Redis 或使用无状态 Token。upstream pay_api { least_conn; server 10.0.2.21:9000 weight3; server 10.0.2.22:9000 weight1; keepalive 64; }weight可用于新旧机器混部性能更强的节点承接更多请求。上线新版本时也可以先给较低权重观察指标再逐步放量。注意开源 Nginx 的主动健康检查能力有限生产环境通常结合服务发现、Kubernetes Ingress 或商业模块实现更完整的摘除机制。四、超时、缓冲与日志代理层最容易被忽略的是超时。超时过长会拖垮连接池过短会误杀慢接口。应按业务类型区分配置普通 API 可以更短文件上传和报表接口单独放宽。location /api/ { proxy_connect_timeout 3s; proxy_send_timeout 15s; proxy_read_timeout 15s; proxy_buffering on; proxy_buffers 16 16k; proxy_pass http://order_api; }最后要把访问日志结构化至少包含请求时间、上游地址、上游响应时间和状态码。排查“接口慢”时先看慢在 Nginx 排队、网络连接、后端处理还是响应回传。反向代理不是简单转发它是服务入口的第一道可观测边界。上线前建议准备一套压测配置分别验证短连接、长连接、慢接口和后端故障。后端节点下线时应先从负载均衡摘除再等待存量请求结束最后停止应用。TLS 证书、域名解析和跨域头也应纳入配置审查。很多入口故障不是 Nginx 语法错误而是代理头、超时和后端发布流程没有统一约定。对于多环境部署建议把公共代理片段抽成 include 文件例如统一的转发头、超时和日志格式。业务只维护域名、路径和 upstream减少复制错误。配置变更必须先在预发环境 reload 验证再观察错误码和上游耗时确认没有异常后再进入生产。 本文是《服务部署与运维》系列持续更新关注不迷路。 下一篇《Nginx高并发调优worker与连接数配置》讲代理上线后如何建立连接容量基线。 你在实际项目里遇到过负载均衡后流量不均或上游健康检查失真的问题吗评论区聊聊。觉得有用点个赞收藏方便回头查阅 相关可运行源码/资料已整理成资源包可在我主页的资源里自取。☁️ 本文示例需要一台云服务器新用户可通过此链接领取优惠自用https://cloud.tencent.com/act/cps/redirect?redirect2446cps_key49a769c067bd9c9f53fcb1bdf9feaf23fromconsolecps_promotion_id102832