nginx中的解析器参数

guy*_*yug 5 reverse-proxy nginx resolver

我使用nginx作为与ELB的reverse_proxy服务器.我正在寻找有关我在nginx.conf文件中设置的解析器值的解释.我的nginx.conf:

http {  
   ...

   resolver x.x.x.x valid=30s;

   ...
}

server {

   ...

   set $elb "example.com";

location / { 
    ...

    rewrite ^/(.*) $1 break;
    proxy_pass http://$elb/$1?$args; 

    ...
   }
   ...    
}  
Run Code Online (Sandbox Code Playgroud)

我按照这个 - https://www.ruby-forum.com/topic/6816375#1166569并将/etc/resolv.conf值设置为解析器值,它工作正常.这背后的是什么?

gan*_*est 8

Nginx解析器指令对依赖于ELB和proxy_pass的任何AWS环境都至关重要.这是我最近写的帖子,描述了opensource nginx对静态DNS缓存的问题和解决方案:

Nginx解析器解释了如何处理不断变化的IP

对于简单的情况,基本上它将归结为以下配置:

server {
  listen        80;
  server_name   example.com;

  location / {

    resolver 172.16.0.23;

    set $upstream_endpoint http://service-999999.eu-west-2.elb.amazonaws.com;

    proxy_pass $upstream_endpoint$request_uri;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 您链接的网页烦人地重定向到一个页面,其中包含一些广告与Matrix的图片. (14认同)
  • (烦人的)发布链接上的答案似乎主要是从 https://www.jethrocarr.com/2013/11/02/nginx-reverse-proxies-and-dns-resolution/ 复制的(没有烦人的弹出窗口) (8认同)
  • 这是同一页面上的 JS 弹出窗口。文本框的右上角有一个关闭按钮。 (4认同)
  • 关于此主题的另一篇博客文章:https://tenzer.dk/nginx-with-dynamic-upstreams/ (3认同)
  • 该链接的可用性很差,足以损害此答案的质量。我建议删除链接或用可读的内容代替。 (2认同)

Dmi*_*sIr 7

由于系统解析器会阻塞,因此需要nginx解析器指令。Nginx是一个多路复用服务器(在一个OS进程中有许多连接),因此系统解析器的每次调用将停止处理所有连接,直到收到解析器应答为止。这就是Nginx实现其内部非阻塞解析器的原因。

如果您的配置文件具有静态DNS名称(未生成),并且您不关心在没有重新加载nginx的情况下跟踪IP的更改,则不需要nginx的解析器。在这种情况下,所有DNS名称都将在启动时解析。

resolver如果要在运行时解析域名而无需重新加载nginx,则应使用Nginx 。