尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

分钟买不了吃亏系列: nginx动态域名解析

分钟买不了吃亏系列: nginx动态域名解析
📅 发布时间:2026/7/6 21:39:24

nginx.conf.template 三下五除二:

server {
listen 80;
location /api/asset/upload/ {
proxy_pass https://asset.zlhub.com;
proxy_set_header X-Track-Id $request_id;
proxy_set_header Content-Type $content_type;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_server_name on;
proxy_ssl_verify off;
}
}

运行几个星期后,出现持续的504超时。

直连后端域名, 没有问题; 请求日志中的后端服务器ip, 报超时错误。

再次针对该域名做DNS解析: dig @114.114.114.114 asset.zlhub.cn

; <<>> DiG 9.18.24-0ubuntu5-Ubuntu <<>> @114.114.114.114 asset.zlhub.cn
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54487
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;asset.zlhub.cn. IN A
;; ANSWER SECTION:
asset.zlhub.cn. 476 IN CNAME alb-bd91a9vsooow8dv40otdle5l.cn-beijing.volcenginealb.com.
alb-bd91a9vsooow8dv40otdle5l.cn-beijing.volcenginealb.com. 305 IN A 115.191.51.23
alb-bd91a9vsooow8dv40otdle5l.cn-beijing.volcenginealb.com. 305 IN A 124.174.10.94
;; Query time: 8 msec
;; SERVER: 114.114.114.114#53(114.114.114.114) (UDP)
;; WHEN: Wed Jul 01 14:52:56 CST 2026
;; MSG SIZE rcvd: 146

发现域名asset.zlhub.cn对应的IP已经发生变化, nginx依旧使用原始ip发起请求,于是超时。

这才回想起:

proxy_pass 中如果配置的是域名地址,Nginx 只有在 start / restart / reload 时,才会连接一次域名服务器解析域名,缓存解析的结果,后续则不会根据解析结果的 TTL 进行自动更新”,如果遇到了域名地址配置有多个 IP ,且还在动态变化,那就会出现 Nginx 把请求转发到一个过期的 IP 地址的情况,产生连接超时的报错信息。


nginx开源版本实现动态DNS服务发现

nginx 动态解析域名:

http {
resolver 114.114.114.114 valid=300s ipv6=off;
resolver_timeout 10s;
upstream backend {
server backend1.example.com resolve;
server backend2.example.com resolve;
}
server {
location / {
proxy_pass http://backend;
}
}
}

核心的是resolver指令 和resolver_timeout, 设置nginx的DNS解析服务器地址和解析超时时间。

这还没完

① 以上nginx配置,nginx发起的代理请求的host:backend, 这在共享的网关服务上会通过server_name 匹配“backend”字符串,找不到会报503 Service Temporarily Unavailable, 所以我们还需要在nginx转发请求的时候强制让host等于原始域名:proxy_set_header Host asset.zlhub.cn;

② 本次我们的后端服务是强制https, 我们除了proxy_pass https://backend 之后, 在upstream backend要指定端口: server backend2.example.com:443 resolve;

完整的配置如下:

resolver 114.114.114.114 valid=30s;
upstream backend {
zone backend_dynamic 64k;
server asset.zlhub.cn:443 resolve;
}
server {
listen 80;
error_log /dev/stderr debug;
location /api/asset/upload/ {
proxy_pass https://backend;
proxy_set_header X-Track-Id $request_id;
proxy_set_header Content-Type $content_type;
proxy_set_header Host asset.zlhub.cn;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_server_name on;
proxy_ssl_verify off;
}
}
# 如果修改了nginx 模板文件, 需要使用docker compose up -d --force-recreate

上图左侧发起请求,右侧tcpdump抓包显示 nginx发起了对于 asset.zlhub.cn主机的请求。

相关新闻

  • 解锁Emby/Jellyfin媒体播放新境界:本地播放器深度集成与进度同步完全指南
  • 为什么选择HQTrack?5大核心优势助力视频目标追踪任务效率提升300%
  • 为什么Fish Shell成为开发者最爱的命令行工具:5个颠覆性功能深度解析

最新新闻

  • 宋维刚词霸天下38000词思维导图:基于COCA词频的10级优先级划分与38907词覆盖分析
  • MAX9744与STM32L162ZE在嵌入式音频系统中的应用与优化
  • 计算机毕业设计之基于Yolov8的安全帽佩戴目标检测系统
  • DeepSeek API调用指南:实现自动化代码生成与集成
  • MySQL 8.0 运算符深度对比:!= 与 <> 的 3 大性能差异与 NULL 处理陷阱
  • PyTorch 2.x Tensor与NumPy互转:3种方法的内存共享与梯度陷阱详解

日新闻

  • AI智能体安全防护框架AgentGuard:从原理到实战部署指南
  • KMX63与PIC18F26K40硬件组合及低功耗设计实践
  • 基于YOLO13改进的门体检测模型:C3k2模块与PoolingFormer技术解析

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号