Tengine 中错误日志:could not be resolved (3: Host not found) Tengine/2.3.3 版本,域名已在/etc/hosts文件配置解析,但是后端通过X-AcceT-Redirect 方式返回给nginx一个URL,其中的域名无法解析,upstream代理等配置的hostname都能解析出ip。实在是想不通,为啥不从文件中解析,就只从配置的dns服务器上解析?
这个问题可能是由于Tengine的DNS解析策略导致的。在Tengine中,可以通过修改/etc/hosts
文件来配置域名解析。但是,如果后端通过X-AcceT-Redirect方式返回给nginx一个URL,其中的域名无法解析,可能是因为Tengine没有正确读取到这个URL中的域名。
为了解决这个问题,你可以尝试以下方法:
/usr/local/openresty/nginx/conf/nginx.conf
)中的resolver
指令正确配置了DNS服务器。例如:http {
...
resolver 8.8.8.8;
...
}
/usr/local/openresty/logs/error.log
),看是否有关于无法解析域名的错误信息。如果有,可以根据错误信息进行相应的调整。一般程序都不会主动从hosts文件里读取,都是调用 gethostbyname 之类的 dns 解析函数,这些函数里统一做的,不过这些函数可能卡顿进程影响并发性能,nginx 需要纯异步交互,所以都是从 dns 服务器上异步交互的。可以参考一下这个文档的解法是否能解决你的问题:
https://stackoverflow.com/questions/8305015/when-using-proxy-pass-can-etc-hosts-be-used-to-resolve-domain-names-instead-of/8559797
此回答来自钉群Tengine 开源交流群。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。