• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

韩工

  • 博客园
  • 管理

公告

View Post

OpenResty域名解析之dnsmasq服务配置

OpenResty使用lua_resty_http模块时,直接使用IP地址连接正常,但有时用指定域名配置时,日志会提示如下错误:

failed to request: xxx.com could not be resolved (5: Operation refused)

 

原因分析:OpenResty使用的是Nginx的resolver,不直接读取/etc/hosts里面的域名配置,也不走/etc/resolver指定的解析服务器

解决办法:可以部署dnsmasq自建一个小型DNS

  • 安装dnsmasq
apt -y install dnsmasq

  

  • 配置dnsmasq
# /etc/resolv.conf存放的是系统的dns,resolv-file表示根据系统dns列表读取
resolv-file=/etc/resolv.conf  

# resolv.conf内的DNS寻址严格按照从上到下顺序执行,直到成功为止
strict-order

# DNS解析hosts时对应的hosts文件,对应no-hosts,填写本地读取的/etc/hosts域名
addn-hosts=/etc/hosts
cache-size=1024  

# 多个IP用逗号分隔,192.168.x.x表示本机的ip地址,只有127.0.0.1的时候表示只有本机可以访问。
# 通过这个设置就可以实现同一局域网内的设备,通过把网络DNS设置为本机IP从而实现局域网范围内的DNS泛解析(注:无效IP有可能导至服务无法启动)
listen-address=192.168.x.x,127.0.0.1 

# 配置域名
address=/xxx.com/127.0.0.1 

  

  

sed -i "s/\#resolv-file=/resolv-file=\/etc\/resolv.conf/g" /etc/dnsmasq.conf 
sed -i "s/\#strict-order/strict-order/g" /etc/dnsmasq.conf 
sed -i "s/\#addn-hosts=\/etc\/banner_add_hosts/addn-hosts=\/etc\/hosts/g" /etc/dnsmasq.conf 
sed -i "s/\#listen-address=/listen-address=192.168.1.71,127.0.0.1/g" /etc/dnsmasq.conf 
sed -i "s/\#address=\/double-click.net/address=\/xxx.com/g" /etc/dnsmasq.conf 
sed -i "s/\#domain=thekelleys.org.uk/domain=xxx.com/g" /etc/dnsmasq.conf
echo "cache-size=1024" >> /etc/dnsmasq.conf 
echo "server=114.114.114.114" >> /etc/dnsmasq.conf
echo "server=8.8.8.8" >> /etc/dnsmasq.conf

  

 

  • 启动dnsmasq
systemctl enable dnsmasq --now

  

注:启动失败可能是和系统systemd-resolved服务端口冲突,执行命令:systemctl disable systemd-resolved  --now

错误提示如下图所示:

 

 

  •  nginx配置

/usr/local/openresty/nginx/nginx.conf配置文件中添加resolver,如下图所示:

 

 

征途漫漫,惟有奋斗!

posted on 2025-06-26 14:24  韩工-Hill  阅读(50)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3