惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
B
Blog RSS Feed
大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
MongoDB | Blog
MongoDB | Blog
Hugging Face - Blog
Hugging Face - Blog
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
B
Blog
小众软件
小众软件
T
Tailwind CSS Blog
MyScale Blog
MyScale Blog
I
InfoQ
Engineering at Meta
Engineering at Meta
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
H
Help Net Security
雷峰网
雷峰网
S
SegmentFault 最新的问题
V
Visual Studio Blog
爱范儿
爱范儿

i4T

OpenClaw在Macmini下网络HTTPS_Proxy代理配置 | i4T 容器化部署OpenClaw授权View权限对Kubernetes集群进行巡检故障排查 | i4T 初试VictoriaLogs集群采集Kubernetes Pod日志 | i4T Kubernetes 部署Elasticsearch为WordPress提供文章搜索 | i4T Kubernetes使用Prometheus监控爱快路由器iKuai_Exporter | i4T RustDesk API集成Authentik ODIC单点登录 | i4T Kubernetes 部署RustDesk API实现专业版功能及管理Web UI | i4T 使用Kubernetes 快速部署RustDesk替换向日葵toDesk进行远程连接 | i4T Authentik 集成群晖Synology DSM 实现单点登录 | i4T Authentik 集成Kubernetes Grafana 实现SSO单点登录 | i4T Authentik 集成接入VMware vCenter 8.0.3实现ldP身份提供商登录 | i4T Kubernetes v1.29.9部署Authentik 统一认证平台并接入Harbor | i4T 二进制Kafka_2.13-3.9.0集群开启并配置ACL用户授权 | i4T R730 ESXI 8.0平台PCI直通2080Ti 实现Windows远程游戏以及AI模型 | i4T Dell R730虚拟化ESXI8.0.3平台使用丽台Tesla V100配置vGPU | i4T Kubernetes使用HostAliases手动为容器Pod添加hosts解析 | i4T Kubernetes LoadBalancer负载均衡外部访问方案MetalLB | i4T Kubernetes 1.29.0 部署配置Ingress-nginx-controller | i4T Ubuntu环境下Docker Compose配置Harbor开机自启 | i4T Dell PowerEdge R730更新iDRAC8版本 | i4T Kubernetes部署RedisShake实现Redis哨兵异地灾备 | i4T Kubernetes部署开源Excalidraw实现在线绘图 | i4T Kubernetes部署DNSmgr聚合公网DNS多平台域名解析系统及SSL自续签 | i4T Kubernetes Grafana数据从Sqlite3迁移到MySQL | i4T 宝塔内网Nginx获取公网宝塔Nginx用户真实IP | i4T 基于Kubernetes Categraf SNMP插件采集Dell R730服务器硬件并使用Grafana监控 | i4T Kubernetes v1.29.9安装Grafana 12并开启匿名访问 | i4T Containerd 配置免费镜像加速源 | i4T Docker集成Containerd实现容器管理 | i4T
Nginx 使用resolver变量实现动态DNS解析配置 | i4T
https://i4t.com/users/auuAwtzuk · 2025-08-06 · via i4T

Nginx的resolver指令用于配置DNS解析器,使用set参数设置一个变量,使其在Nginx Proxy代理配置中生效。默认情况下只使用resolver参数无法实现动态DNS解析,需要配置set变量使用

使用场景

内网Nginx已开通外网策略,为了保证服务器出外网的安全性不修改系统DNS,此时就需要使用Nginx内置resolver变量实现

resolver参数解释

resolver 指令指定DNS服务器的地址,用于将域名解析为IP地址.语法规则如下

Syntax: resolver address ... [valid=time] [ipv4=on|off] [ipv6=on|off] [status_zone=zone];
Default:    —
Context:    http, server, location

案例演示:使用Nginx代理企业微信接口,不修改host文件以及DNS文件实现

配置文件为通用配置,编译安装以及apt或yum安装皆可以使用

PING测试,默认PING没有DNS解析

root@tools-03:~# ping qyapi.weixin.qq.com
ping: qyapi.weixin.qq.com: Temporary failure in name resolution

修改Nginx配置文件代理

root@tools-03:/etc/nginx/conf.d# cat nginx.conf
server {
  listen       7443;
  server_name  localhost;
  access_log  logs/access_7443.log;
  #DNS配置,可以写多个
  resolver  192.168.21.1 valid=30s ipv6=off;

  location / {
      set $backend "qyapi.weixin.qq.com";
      proxy_pass https://$backend;
      resolver_timeout 5s;
      proxy_set_header Host qyapi.weixin.qq.com;    #设置域名请求头位企微地址
      proxy_ssl_server_name on;
      proxy_connect_timeout 60s;
      proxy_send_timeout 600s;
      proxy_read_timeout 600s;
  }
}

上述配置文件使用7443代理端口,访问qyapi.weixin.qq.com,并且DNS采用192.168.21.1

#验证配置文件并重载

root@tools-03:/etc/nginx/conf.d# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@tools-03:/etc/nginx/conf.d# nginx -s reload

启动完毕,检查7443端口

root@tools-03:/etc/nginx/conf.d# ss -lntup|grep nginx
tcp   LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=2218,fd=5),("nginx",pid=2217,fd=5),("nginx",pid=1926,fd=5))
tcp   LISTEN 0      511          0.0.0.0:7443      0.0.0.0:*    users:(("nginx",pid=2218,fd=14),("nginx",pid=2217,fd=14),("nginx",pid=1926,fd=14))
tcp   LISTEN 0      511             [::]:80           [::]:*    users:(("nginx",pid=2218,fd=6),("nginx",pid=2217,fd=6),("nginx",pid=1926,fd=6))

请求测试,请求成功如下所示

root@tools-03:/etc/nginx/conf.d# curl 192.168.21.32:7443
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>

查看访问日志

root@tools-03:/etc/nginx/conf.d# tail -f /usr/share/nginx/logs/access_7443.log
192.168.21.32 - - [06/Aug/2025:15:30:28 +0000] "GET / HTTP/1.1" 403 146 "-" "curl/8.9.1"

因为没有添加企微调用接口,所以访问为403,默认情况下我们是无法解析,现在代表DNS没有问题

Nginx配置文件中set用于定义变量。配合使用resolver和set可以实现动态的DNS解析,从而根据不同的条件将请求代理到不同的后端服务器

resolver_timeout 还可以为DNS设置超时时间

Syntax: resolver_timeout time;
Default:    
resolver_timeout 30s;
Context:    http, server, location
Sets a timeout for name resolution, for example:

个人中心

购物车

优惠劵

今日签到

有新私信 私信列表

搜索

幸运之星正在降临...

点击领取今天的签到奖励!

恭喜!您今天获得了{{mission.data.mission.credit}}积分

  • 限制以下商品使用: 限制以下商品分类使用: 不限制使用:

    所有商品和商品类型均可使用