Nginx通过server_name按Host头静态匹配server块实现高效域名路由,每个块独立proxy_pass至指定upstream;需配listen、定义upstream(支持负载策略与健康检查)、透传关键请求头,并设default_server兜底。

用 server_name 动态分发后端集群,本质是让 Nginx 根据请求里的 Host 头自动选中对应的 server 块,每个块内独立配置 proxy_pass 指向不同 upstream。这不是“动态”脚本逻辑,而是靠 Nginx 的静态匹配机制实现的高效、确定性路由。
按域名划分独立 server 块
每个要代理的域名(或通配符)单独写一个 server 块,Nginx 启动时就完成 Host 匹配编译,运行时零开销查找。
-
server_name api.example.com;—— 精确匹配 -
server_name *.admin.example.org;—— 通配符匹配子域 -
server_name ~^app[0-9]+\.prod\.example\.com$;—— 正则匹配(慎用,性能略低) - 必须配
listen 80或listen 443 ssl,HTTPS 还要加载对应证书
为每个域名绑定专属 upstream
在 http 块顶层定义多个 upstream,名称有意义(如 upstream api_backend),便于识别和维护。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 每个
upstream可设不同策略:轮询、ip_hash(登录态)、least_conn(长连接多的场景) - 支持健康检查参数:
max_fails=3 fail_timeout=30s,自动隔离故障节点 - 可混用
weight和backup,例如高配机器加权,灾备机仅在主节点全挂时启用
透传关键请求头并控制转发路径
在每个 server 块的 location 中配置 proxy_pass,同时补全必要头部,避免后端丢失上下文。
-
proxy_pass http://api_backend;—— 不带尾部斜杠:完整路径原样转发 -
proxy_pass http://admin_backend/;—— 带尾部斜杠:截掉location匹配前缀再转发(如location /admin→ 转发为/) - 必设三行头:
Host $host(保持原始 Host)、X-Real-IP $remote_addr、X-Forwarded-For $proxy_add_x_forwarded_for - 若前端有 HTTPS,加
X-Forwarded-Proto $scheme,方便后端生成正确跳转链接
设置 default_server 防止未匹配流量丢失
至少保留一个 server 块带 default_server 参数,拦截所有未被显式 server_name 匹配的请求。
- 可返回 444(关闭连接)、403(拒绝)或重定向到维护页
- 避免因拼写错误、恶意 Host 头或测试请求打到错误 upstream
- 示例:
server { listen 80 default_server; return 444; }

















