我在router.mydomain.com有个中枢nginx反应。它对不同的nginxes有一些代理:
server {
listen 8080;
server_name nginx_server;
port_in_redirect off;
location / {
root /html;
index index.html index.htm;
}
location /site1/ {
proxy_pass https://site1.mydomain.com;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
location /site2/ {
proxy_pass https://site2.mydomain.com;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
这两个站点都是托管在kubernetes环境中的nginxes。
现在,问题是,每次我在kubernetes中部署site1或site2时,路由都会正确更新,所以如果https://site1.mydomain.com指向一个特定的docker实例#1,而新的部署是一个docker实例#2,那么url https://site1.mydomain.com how就指向docker实例#2。
这一切都很好,但router.mydomain.com一直指向首先解析到#1实例的IP。
router ---> https://site1 ---> docker #1 (ip: 123.456.789)
router ---> https://site1 ---> docker #1 (ip: 123.456.789)
\--> docker #2 (ip: 234.567.890)
router ---> https://site1 -X-> docker #1 (ip: 123.456.789)
\--> docker #2 (ip: 234.567.890)
router (still pointing to ip: 123.456.789) -X-> https://site1 ---> docker #2 (ip: 234.567.890)
我怎样才能让nginx“注意到”dns的改变?我应该完全关闭dns缓存吗?我可以让nginx缓存dns的时间更短吗?多么?
发布于 2020-03-31 01:57:52
nginx有它自己的非阻塞解析代码,但是为了使用它,你需要指定一个使用resolver
指令的解析器。Here你可以找到一些技术细节,为什么nginx的作者实现了这样的机制。您可以使用本地域名服务器,也可以使用外部域名服务器,如Google public DNS (8.8.8.8,8.8.4.4)或ISP为您提供的DNS:
resolver 8.8.8.8;
您可以在上次解析的名称有效时指定超时时间:
resolver 8.8.8.8 valid=30s;
除非您这样做,否则nginx只会在启动时从配置文件中解析您的域名一次。
对于您的情况,为您的域使用一个权威名称服务器是有意义的。为了获得该服务器的列表,您可以使用以下命令:
nslookup -type=ns mydomain.com
您的最终配置将如下所示
server {
listen 8080;
server_name nginx_server;
port_in_redirect off;
resolver <your_authoritative_name_server> valid=<timeout>;
location / {
root /html;
index index.html index.htm;
}
location /site1/ {
proxy_pass https://site1.mydomain.com;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
location /site2/ {
proxy_pass https://site2.mydomain.com;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
}
由于您使用的是docker,因此您可能也会对这个问题感兴趣:nginx in docker proxy path to subdomain
https://stackoverflow.com/questions/60936400
复制相似问题