开发者社区 > 云原生 > 中间件 > 正文

Tengine 中错误日志:为啥不从文件中解析,就只从配置的dns服务器上解析?

Tengine 中错误日志:could not be resolved (3: Host not found) Tengine/2.3.3 版本,域名已在/etc/hosts文件配置解析,但是后端通过X-AcceT-Redirect 方式返回给nginx一个URL,其中的域名无法解析,upstream代理等配置的hostname都能解析出ip。实在是想不通,为啥不从文件中解析,就只从配置的dns服务器上解析?

展开
收起
小小鹿鹿鹿 2023-11-13 19:04:56 30 0
2 条回答
写回答
取消 提交回答
  • 这个问题可能是由于Tengine的DNS解析策略导致的。在Tengine中,可以通过修改/etc/hosts文件来配置域名解析。但是,如果后端通过X-AcceT-Redirect方式返回给nginx一个URL,其中的域名无法解析,可能是因为Tengine没有正确读取到这个URL中的域名。

    为了解决这个问题,你可以尝试以下方法:

    1. 确保Tengine的配置文件(通常是/usr/local/openresty/nginx/conf/nginx.conf)中的resolver指令正确配置了DNS服务器。例如:
    http {
        ...
        resolver 8.8.8.8;
        ...
    }
    
    1. 检查Tengine的日志文件(通常是/usr/local/openresty/logs/error.log),看是否有关于无法解析域名的错误信息。如果有,可以根据错误信息进行相应的调整。
    2023-11-30 15:39:00
    赞同 展开评论 打赏
  • 一般程序都不会主动从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 开源交流群。

    2023-11-14 23:20:03
    赞同 展开评论 打赏

为企业提供高效、稳定、易扩展的中间件产品。

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像