Nginx 有办法通过指令获取到某个域名的IP吗

83次阅读

共计 1194 个字符,预计需要花费 3 分钟才能阅读完成。

比如在 server 段获取某域名 IP 并存到变量里 acpp 2023-05-19 03:53 2 搜索下 resolver   指令 未来云 2023-05-19 03:53 3 是的,你可以使用 Nginx 的变量和 Lua 模块来获取特定域名的 IP 地址并将其存储在变量中。你需要使用 `resolver` 指令来配置 DNS 解析器,然后使用 Lua 脚本来获取域名的 IP 地址。以下是一个示例配置:“`nginx http {     resolver <DNS 服务器地址 >;      server {         listen 80;         server_name example.com;          location / {             access_by_lua_block {                 local resolver = require "resty.dns.resolver"                 local r, err = resolver:new{                     nameservers = {"<DNS 服务器地址 >"}                 }                 if not r then                     ngx.log(ngx.ERR, "failed to instantiate resolver: ", err)                     return ngx.exit(500)                 end                  local answers, err = r:query("< 目标域名 >")                 if not answers then                     ngx.log(ngx.ERR, "failed to query the DNS server: ", err)                     return ngx.exit(500)                 end                  if answers.errcode then                     ngx.log(ngx.ERR, "DNS server returned error code: ", answers.errcode, ": ", answers.errstr)                     return ngx.exit(500)                 end                  local ip = answers[1].address                 ngx.var.target_ip = ip             }         }     } } “`   请注意,在上面的示例中,你需要将 `<DNS 服务器地址 >` 和 `< 目标域名 >` 替换为你实际使用的 DNS 服务器地址和目标域名。当请求到达服务器时,Nginx 将使用 Lua 脚本查询 DNS 服务器获取目标域名的 IP 地址,并将其存储在 `target_ip` 变量中。你可以根据需要在 Nginx 配置中使用该变量。

正文完
 0