Nginx执行nginx -t提示host not found in upstream错误如何解决?
报错原因
Nginx 执行配置校验时会尝试解析 proxy_pass 指令中填写的域名,即使你在同一份 Nginx 配置中定义了 source.blog.demo.com 对应的 Server 块,Nginx 也不会直接读取内部的 server_name 做域名解析,而是会调用系统的 DNS 解析规则查询域名对应的 IP,你的系统没有配置该域名的解析记录,因此校验失败。
解决方法
- 方案一:修改系统 hosts 配置(最简便)
编辑/etc/hosts文件,添加如下解析记录,把配置中用到的两个自定义域名都指向本地回环地址:
127.0.0.1 source.blog.demo.com static.blog.demo.com
保存后重新执行 nginx -t 即可通过校验。
- 方案二:直接替换 proxy_pass 目标为本地IP,手动指定Host头
把所有配置里proxy_pass http://source.blog.demo.com;的部分,替换为如下内容,不需要依赖域名解析即可匹配到对应的Server块:
proxy_pass http://127.0.0.1; proxy_set_header Host source.blog.demo.com;
所有用到自定义域名作为代理目标的位置都做对应修改即可。
内容的提问来源于stack exchange,提问作者user7693832
相关产品推荐
相关产品推荐

