当前位置: 首页 > 知识库问答 >
问题:

nginx解析器--dns

凌声
2023-03-14

请原谅一个非常初级的问题。

我很难理解nginx'解析器'参数及其工作原理。我已经阅读了留档,搜索了教程和帖子(使用解析器、nginx和dns等关键字),但我仍然不确定如何应用解析器。

http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver

"配置用于将上游服务器的名称解析为地址的名称服务器......"

  • 根据这个定义,它似乎只是在做名称服务器的工作。解析器ns1.myhost.comns2.myhost.com;但示例指向内部/私有IP地址。

"地址可以指定为域名或IP地址,以及可选端口......"

  • 这意味着我可以使用分解器示例。com www.example。com (或<代码>解析器12.34.56.78;),但同样,我在文档中没有看到这样的示例

作为一个实际的例子,让我们假设(完全假设:)-我正在构建一个简单的web服务器,上面有几个服务器块。

我是否将“解析器”设置为服务器本身的IP?还是服务器局域网中的内部IP?留档似乎建议使用内部IP(127. x. x. x或10. x. x. x)-但是如何设置/确定该IP是什么?

共有3个答案

孙正业
2023-03-14

如果您想手动设置分辨率,而无需使用bind9或dnsmasq等外部工具,还有另一种方法可以做到这一点

location / {
    set $upstream 12.34.56.78;  # desired IP resolution
    proxy_pass  http://$upstream:8080; # desired port
    proxy_set_header Host example.com; # desired host
}
鲁俊友
2023-03-14

“Resolver”参数定义了为了解析proxy\u pass下传递的URL的IP,nginx必须使用的DNS服务器的位置;

正如塔伦所解释的那样,默认情况下,nginx将从host/etc/resolv中选择您的解析器。一旦解析,它将缓存IP。分解器主要用于两种情况:
1。在专用网络中,解决网络中存在的IP
2。或者在您的proxy\u pass或上游位置的IP变化非常频繁并且您无法依赖nginx缓存IP的地方使用。

在您指定的示例中,解析器将是可以解析您的位置的DNS服务器的IP。这可能是:

1) 127.0.0.1:如果web服务器本身是DNS服务器,则需要在该服务器的端口53(默认)上设置DNS服务器。

2) x.x.x.x:托管在中的DNS服务器的IP,位于您的专用网络或任何公共DNS服务器中(如果您的URL可公开访问)。可以使用8.8.8.8(谷歌的公共DNS服务器)。

3) 您指定了10。x、 x.x:假设您参考的是AWS文档。如果不是,通常为10。x、 x.x同样需要是DNS服务器IP,在AWS的情况下是10.0.0.2。AWS保留其专有网络的一些IP,第二个IP x.x.x.2保留给DNS服务器。请注意,如果您的专有网络不是10.0.0.0/16,此IP将相应更改。例如:假设您的专有网络是10.192.0.0/16,那么您将使用10.192.0.2作为解析器。

以上参考https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html

https://www.jethrocarr.com/2013/11/02/nginx-reverse-proxies-and-dns-resolution/

慕容品
2023-03-14

解析是指当必须解析外部url时,nginx应该引用哪个DNS服务器。如果你有如下配置

location / {
    proxy_pass http://www.example.com/abc/def; 
}

现在,默认情况下,nginx将从主机选择解析器。conf,但它可能不是您所需要的。如果您想使用谷歌DNS解析器,那么您将更新nginx配置,如下所示:

location / {
    resolver 8.8.8.8;
    proxy_pass http://www.example.com/abc/def; 
}

如果您正在使用本地DNS解析器在本地网络内进行路由,则可以使用以下内容:

location / {
    resolver 192.168.11.10;
    proxy_pass http://machineabc/abc/def; 
}
 类似资料:
  • 问题内容: 我正在尝试摆脱配置中已弃用的Docker链接。当我重新创建容器时,剩下的就是摆脱那些nginx反向代理错误。 注意:我正在桥接模式下使用Docker网络。() 我在nginx中使用以下配置代码段: 我在Docker网络上以name 为主机名启动了一个容器。 然后,我在网络上启动了Nginx容器。 我可以从Nginx容器内ping 在nginx容器的文件中列出 Nginx日志说 我试过泊

  • 我找不到让nginx pod解析另一个kubernetes服务url的方法。 我没有使用库贝-dns,我们只使用kube2sky,我们还没有实现库贝-dns,所以我需要修复这个场景。 例如,我希望nginx解析服务URL,但如果我对该URL运行ping,它将成功解析。 我的nginx配置部分是: 我需要在变量中指定目标上游,因为我希望nginx启动,即使目标不可用,如果我没有在变量中指定nginx

  • 本文向大家介绍Python解析nginx日志文件,包括了Python解析nginx日志文件的使用技巧和注意事项,需要的朋友参考一下 项目的一个需求是解析nginx的日志文件。 简单的整理如下: 日志规则描述 首先要明确自己的Nginx的日志格式,这里采用默认Nginx日志格式: 其中一条真实记录样例如下: 其中,客户端型号信息用XXXXXXX代替。 项目中已经按照业务规则对Nginx日志文件进行了

  • 高性能服务器设计 c10k问题 高性能服务器编写的关键原则 事件驱动的核心引擎 定时器管理 nginx架构详解(50%) nginx的源码目录结构(100%) nginx的configure原理(100%) auto脚本 模块编译顺序 nginx的事件机制 event框架及非阻塞模型 定时器实现 信号处理 惊群问题 nginx的进程机制 master进程 worker进程 进程间通讯 nginx基

  • 使用变量重写时 当使用标准Kubernetes时,我可以使用作为冲突解决程序: 但Openshift并没有提供这一点。我已经尝试使用容器的,它只是我集群中运行DNS服务器的节点之一,但它仍然无法解析。 最奇怪的部分是从容器终端内部使用中的名称服务器,它工作正常。 有没有一个等效于我可以使用的开放移位中的库伯内特斯DNS主机名,或者其他解决方案来解决这个问题?

  • 本文向大家介绍nginx服务器中access_log日志分析与配置详解,包括了nginx服务器中access_log日志分析与配置详解的使用技巧和注意事项,需要的朋友参考一下 前言 nginx的log日志分为:access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息 error log 则是记录服务器错误日志 log_fo