Nginx-HAProxy-Squid对比与实践
反向代理、负载均衡与缓存三剑客Nginx / HAProxy / Squid 对比与实践CentOS/Rocky 9.6声明文中出现的 IP 地址、域名、端口、口令等均为示例占位IP 采用 RFC 5737 文档地址段192.0.2.0/24、198.51.100.0/24、203.0.113.0/24及保留域名example.com内网段使用标准私网地址不指向任何真实环境部署时请按实际网络规划替换。一、写在前面三个概念先厘清在互联网架构中反向代理、负载均衡和缓存是提升网站性能与可用性的核心技术三者职责不同却经常被放在一起讨论。概念核心作用典型工具反向代理Reverse Proxy代理外部请求访问后端服务隐藏后端真实拓扑Nginx、HAProxy负载均衡Load Balancing按策略将流量分发到多台后端提升吞吐与可用性HAProxy、Nginx缓存Cache就近存储热数据减少源站压力、降低响应延迟Squid、Nginx反向代理客户端只感知代理入口不感知后端服务器细节天然具备安全隔离作用负载均衡通过调度算法轮询、最少连接、哈希等将请求分摊到后端集群配合健康检查实现故障摘除缓存把频繁访问的内容网页、图片、接口响应暂存在代理层命中时直接返回显著节省带宽。下面分别对 Nginx、HAProxy、Squid 的能力、适用场景、安装方式与常用命令进行浅析。二、NginxWeb 层的全能选手2.1 核心能力高性能 HTTP/HTTPS 反向代理事件驱动、异步非阻塞架构单机即可支撑数万并发连接负载均衡支持轮询round-robin、加权轮询、最少连接least_conn、IP 哈希ip_hash等算法静态文件服务与压缩直接高效返回静态资源支持 gzip/brotli 压缩扩展性通过 ngx_luaOpenResty 体系可做业务逻辑定制模块生态丰富协议支持WebSocket、HTTP/2、TLS/SSL 终止HTTPS 证书统一在 Nginx 层处理。2.2 工作原理HTTPS 请求负载均衡算法负载均衡算法负载均衡算法响应响应响应响应客户端Nginx 反向代理后端服务器 1后端服务器 2后端服务器 N2.3 适用场景Web 服务反向代理静态资源加速HTTPS/TLS 协议终止中小型网站或微服务网关Kong、APISIX 等网关多基于 Nginx 构建2.4 安装方式CentOS/Rocky 9.6# 安装 EPEL 仓库sudodnfinstallepel-release-y# 安装 Nginxsudodnfinstallnginx-y# 启动并设置开机自启sudosystemctlenable--nownginx# 检查状态sudosystemctl status nginx2.5 常用命令# 启动 Nginxsudosystemctl start nginx# 重启 Nginxsudosystemctl restart nginx# 平滑重载配置不中断服务sudonginx-sreload# 校验 Nginx 配置语法sudonginx-t# 停止 Nginxsudosystemctl stop nginx# 实时查看 Nginx 日志sudojournalctl-unginx-f2.6 配置示例反向代理 负载均衡 静态缓存/etc/nginx/conf.d/example.conf关键片段示例IP 均为文档占位段# 定义后端服务器池IP 为示例占位请替换为实际内网地址 upstream backend_pool { server 192.0.2.11:8080 weight2; server 192.0.2.12:8080 weight1; server 192.0.2.13:8080 backup; keepalive 32; } # 静态缓存目录定义 proxy_cache_path /var/cache/nginx levels1:2 keys_zonestatic_cache:10m max_size1g inactive60m use_temp_pathoff; server { listen 80; server_name example.com; location / { proxy_pass http://backend_pool; 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; } # 静态资源走缓存 location ~* \.(js|css|png|jpg|svg|woff2)$ { proxy_pass http://backend_pool; proxy_cache static_cache; proxy_cache_valid 200 60m; add_header X-Cache-Status $upstream_cache_status; } }三、HAProxy高并发负载均衡之王3.1 核心能力高性能 TCP/HTTP 负载均衡同时支持四层L4TCP与七层L7HTTP/HTTPS多种负载均衡算法轮询、加权轮询、最少连接leastconn、源 IP 哈希source、URI 哈希等健康检查主动/被动探测后端节点状态自动摘除故障节点、恢复后自动加入会话保持基于 Cookie 或源 IP 实现粘性会话SSL/TLS 支持支持证书终止与透传监控统计面板HAProxy Stats实时查看连接数、节点健康状态、队列等指标资源占用低、吞吐高非常适合核心流量入口。3.2 工作原理TCP/HTTP算法选择 健康检查算法选择 健康检查算法选择 健康检查响应响应响应客户端HAProxy 负载均衡器后端服务器 1后端服务器 2后端服务器 N3.3 适用场景高并发场景的 TCP/HTTP 负载均衡金融、电商等对可用性要求高的系统内部服务网关、数据库读写分离MySQL、Redis 等四层负载均衡3.4 安装方式CentOS/Rocky 9.6# 安装 HAProxysudodnfinstallhaproxy-y# 启动并设置开机自启sudosystemctlenable--nowhaproxy# 检查状态sudosystemctl status haproxy3.5 常用命令# 启动 HAProxysudosystemctl start haproxy# 重启 HAProxysudosystemctl restart haproxy# 校验配置是否正确修改配置后建议先执行sudohaproxy-c-f/etc/haproxy/haproxy.cfg# 平滑重载配置sudosystemctl reload haproxy# 查看配置文件和运行状态sudosystemctl status haproxy3.6 配置示例HTTP 负载均衡 健康检查 Stats 面板/etc/haproxy/haproxy.cfg示例IP 为文档占位段global log /dev/log local0 maxconn 50000 stats socket /run/haproxy/admin.sock mode 660 level admin defaults mode http timeout connect 5s timeout client 30s timeout server 30s frontend http_front bind *:80 default_backend web_servers # 示例仅允许指定网段访问按需开启 # acl allow_src src 192.0.2.0/24 # http-request deny if !allow_src backend web_servers balance leastconn option httpchk GET /health server web1 192.0.2.21:8080 check inter 3s fall 3 rise 2 server web2 192.0.2.22:8080 check inter 3s fall 3 rise 2 server web3 192.0.2.23:8080 check inter 3s fall 3 rise 2 backup listen stats bind *:8404 mode http stats enable stats uri /haproxy-stats # 生产环境务必限制访问来源并启用强认证以下为示例占位口令 stats auth admin:ChangeMe123提示stats auth中的口令仅为示例生产环境请使用强口令并通过防火墙/ACL 限制 8404 端口的访问来源。四、Squid内网代理与缓存专家4.1 核心能力HTTP/HTTPS 正向代理作为内网用户访问外网的统一出口缓存加速命中缓存直接返回加快重复请求响应、节省出口带宽访问控制列表ACL按 URL、IP、端口、时间等维度精细化管控认证支持LDAP、NTLM、Basic 等认证方式日志记录完整的访问日志便于审计与追溯。4.2 工作原理请求命中未命中响应并写入缓存客户端Squid 代理缓存服务器本地缓存是否命中直接返回缓存内容目标服务器4.3 适用场景内网用户访问外网的统一代理网页缓存优化节省带宽、加速访问内网安全控制基于 URL / IP 的访问管控4.4 安装方式CentOS/Rocky 9.6# 安装 Squidsudodnfinstallsquid-y# 启动并设置开机自启sudosystemctlenable--nowsquid# 检查状态sudosystemctl status squid4.5 常用命令# 启动 Squidsudosystemctl start squid# 重启 Squidsudosystemctl restart squid# 查看 Squid 状态sudosystemctl status squid# 检查 Squid 配置文件语法sudosquid-kparse# 平滑重载配置sudosquid-kreconfigure# 查看缓存命中率等统计信息需在配置中启用 cachemgr 权限sudosquidclient mgr:info|grep-i-Ehit|miss4.6 配置示例正向代理 缓存 ACL/etc/squid/squid.conf关键片段示例内网段为占位# 监听端口3128 为默认代理端口 http_port 3128 # 缓存目录磁盘容量(MB) 一级子目录数 二级子目录数 cache_dir ufs /var/spool/squid 4096 16 256 # 缓存内存上限 cache_mem 256 MB # 定义允许的内网网段示例占位请按实际网段修改 acl localnet src 10.0.0.0/8 acl localnet src 172.16.0.0/12 acl localnet src 192.168.0.0/16 # 安全端口定义 acl SSL_ports port 443 acl Safe_ports port 80 acl Safe_ports port 443 # 访问控制规则默认安全基线 http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access allow localnet http_access deny all五、Nginx、HAProxy、Squid 的区别总结特性NginxHAProxySquid类型HTTP/HTTPS 反向代理TCP/HTTP 负载均衡HTTP/HTTPS 正向代理工作层级七层HTTP/HTTPS为主四层TCP 七层HTTP七层代理主要用途网站加速、反向代理、静态服务高并发负载均衡内网访问控制与缓存负载均衡能力支持 HTTP 负载均衡轮询 / 最少连接 / IP 哈希支持 TCP/HTTP 高级负载均衡算法丰富不适合大规模负载均衡健康检查部分支持upstream 探测强主动探测自动摘除故障节点无面向客户端代理缓存能力静态内容缓存proxy_cache不适合缓存强缓存能力会话保持支持ip_hash / sticky支持Cookie / 源 IP代理同一出口天然一致配置复杂度中等高中等适用场景Web 服务、微服务网关高并发服务、金融、电商系统内网代理、带宽优化、访问控制六、组合架构三者如何协同在实际项目中三者往往组合使用各司其职、互为补充外网客户端Nginx 反向代理静态资源 缓存Squid 内网代理/缓存HAProxy 负载均衡后端应用服务器 1后端应用服务器 2后端应用服务器 N分工建议层级工具职责出口层Squid内网用户统一代理出口访问控制与网页缓存节省带宽Web 层Nginx对外反向代理、TLS 终止、静态资源加速与缓存接入层HAProxy核心四层/七层负载均衡健康检查保障高可用典型流量路径内网用户 → Squid缓存命中直接返回未命中再放行→ Nginx反向代理 静态加速→ HAProxy调度到后端集群→ 应用服务器。七、信息安全与发布注意事项发布到 CSDN 等公开平台前请重点确认以下几点地址脱敏本文中 IP、域名、端口均为示例占位切勿直接粘贴生产环境的真实 IP、域名、内网拓扑信息口令与凭据配置示例中的口令、Token、证书私钥一律使用占位符并注明生产环境请更换内部信息避免出现公司名称、内部系统代号、业务敏感口径、真实账号等日志与截图如贴出日志输出、监控面板截图先检查是否包含 IP、账号、Cookie、Token 等敏感字段图片版权如需引用他人示意图请注明出处或使用自绘示意图避免侵权风险。运行层面的基础加固建议结合自身环境评估后采用隐藏版本号Nginx 配置增加server_tokens off;避免暴露服务版本最小权限与访问控制管理端口如 HAProxy Stats 8404限制来源 IP 并启用认证及时更新关注官方安全公告及时升级补丁sudo dnf update -y。八、结语Nginx偏向 Web 层轻量且扩展性好适合做反向代理与静态资源加速HAProxy偏向 TCP/HTTP 负载均衡高可用、高性能适合核心流量入口Squid偏向内网代理与缓存适合节省带宽与安全控制。三者并非互斥组合使用往往能达到入口高可用 Web 层加速 出口管控缓存的整体效果。选型时结合业务场景、流量规模与团队运维能力综合判断即可。