我使用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;
...
}
...
}
我按照这个 - https://www.ruby-forum.com/topic/6816375#1166569并将/etc/resolv.conf值设置为解析器值,它工作正常。这背后的是什么?
答案 0 :(得分:8)
Nginx解析器指令对依赖于ELB和proxy_pass的任何AWS环境都至关重要。这是我最近写的帖子,描述了opensource nginx的静态DNS缓存的问题和解决方案:
Nginx resolver explained and how to deal with changing IPs
基本上,对于简单的情况,它将归结为以下配置:
for i in 1..apex_application.g_f01.count loop
insert into mytable (value) values (apex_application.g_f01(i));
end loop;
答案 1 :(得分:7)
使用系统解析程序块。 Nginx是多路复用服务器(一个OS进程中的许多连接),因此系统解析器的每次调用都将停止处理所有连接,直到收到解决的答案。这就是为什么Nginx实现了自己的内部非阻塞解析器。
如果您的配置文件具有静态DNS名称(未生成),并且您不关心在没有nginx重新加载的情况下跟踪IP更改,则您不需要nginx的解析程序。在这种情况下,所有DNS名称都将在启动时解析。
如果你想在没有nginx重新加载的情况下解析运行时的域名,那么使用Nginx resolver
。