我们的 AWS 配置有一个 nginx 服务器,它将所有 PHP 请求指向一个包含多个 PHP 服务器的 ELB。当 ELB 本身扩展时,我们会在接下来的几个小时内失去连接,因为那些旧 IP 会被回收。重新启动 nginx 服务器会重新缓存 ELB 的 IP,然后一切都会恢复正常。非常标准的做法。
我到处找到的解决方案是,我需要包含一个,resolver
以允许在服务器启动并运行时重新解析。我遇到的问题有两个方面:
- 我当前的配置不起作用。
- 我不知道如何正确地测试它,而不等到它失败。
这是我当前的配置:
http {
resolver 10.0.0.2 valid=10s;
...
server {
...
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
set $route "php:9000";
fastcgi_pass $route;
}
}
}
我发现一篇文章提到使用 tcpdump 来检查 DNS 请求,但我什么也没看到,而且绝对不是按照文章写的每 10 秒一次。这可能与使用 fastcgi_pass 而不是 proxy_pass 有关吗?我是否遗漏了其他内容?