You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EC2上UI服务经Nginx代理访问报'invalid host header'故障排查

域名代理访问异常的常见排查方向
  • DNS解析配置校验
    确认test.mydomain.com的DNS A记录是否正确指向当前EC2实例的公网IP,可在本地执行nslookup test.mydomain.com校验返回结果是否和EC2公网IP匹配,避免解析未生效、记录值填写错误导致请求无法路由到EC2实例。
  • 安全组端口规则校验
    已配置Nginx SSL服务的场景下,默认服务监听80(HTTP跳转)、443(HTTPS业务)端口,需确认EC2安全组入站规则已对0.0.0.0/0放通上述两个端口的访问权限。之前仅能通过http://公网IP:3000访问,大概率是仅放通了3000端口、未开放80/443端口,导致域名发往443的请求被安全组直接拦截。
  • Nginx配置有效性校验
    • 检查对应server块是否正确绑定监听443 ssl端口,SSL证书、私钥的文件路径是否正确,文件权限是否对Nginx运行账号可读
    • 校验proxy_pass http://localhost:3000的路径匹配规则,针对前端代理场景,需补充基础请求头配置:proxy_set_header Host $host;、proxy_set_header X-Real-IP $remote_addr;,避免代理后的请求因头信息缺失被服务端拦截
    • 确认是否配置了80端口的跳转规则,将test.mydomain.com的HTTP请求重定向到HTTPS,否则通过HTTP协议访问域名时无法连通
  • devServer的Host访问限制配置遗漏
    当前给出的devServer配置未设置allowedHosts字段,webpack-dev-server 4.x及以上版本默认开启Host白名单拦截逻辑:
    直连http://公网IP:3000时,请求Host头为公网IP,在devServer默认允许列表内可正常访问;但经过Nginx代理后,请求Host头为test.mydomain.com,不在devServer白名单内时,devServer会直接返回403 "Invalid Host header"响应。需在devServer配置中增加allowedHosts: ['test.mydomain.com'],或临时设置allowedHosts: 'all'验证连通性。
  • 链路分段排查
    在EC2实例本地执行curl -v http://localhost:3000确认devServer服务本身运行正常,再执行curl -v https://test.mydomain.com逐段排查代理链路的响应状态,排除证书链不完整、浏览器本地缓存拦截等客户端侧问题。

内容的提问来源于stack exchange,提问作者Ayush Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.31 05:06:00