Estoy en Ubuntu 16.04 con el último NGINX instalado desdesu repositorio oficial:
$ sudo nginx -v
nginx version: nginx/1.11.8
Tengo lo siguiente definido en /etc/nginx/sites-available/greendot.conf
:
# local dnsmasq
resolver 127.0.0.1;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
zone elixr 64k;
server greendot-elixr-1:4000 resolve;
server greendot-elixr-2:4000 resolve;
}
server {
listen 4000;
location / {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
he seguidola documentación sobre la configuración de servidores ascendentes resueltos DNSy, sin embargo, esta configuración falla:
$ sudo nginx -T
nginx: [emerg] invalid parameter "resolve" in /etc/nginx/sites-enabled/greendot-nginx.conf:11
nginx: configuration file /etc/nginx/nginx.conf test failed
Mi objetivo es simplemente crear un servidor que utilice DNS para resolver periódicamente sus miembros. ¿Qué estoy haciendo mal?
Respuesta1
El resolve
parámetro es parte de la oferta comercial de nginx.
Este es el enfoque que terminé usando:
server {
...
# Use docker's internal nameserver
resolver 127.0.0.11 valid=10s ipv6=off;
location / {
set $target myproject-web;
proxy_pass http://$target:8000;
}
}
Tenga en cuenta que:
- Debe definir una variable (como $target), o nginx realizará una consulta una vez y usará las IP resultantes para siempre (ignorando el parámetro 'válido' del solucionador).
- Si la consulta DNS devuelve varias IP; nginx los realizará por turnos.
- Es posible que este enfoque no funcione para usted si tiene requisitos ascendentes más complejos (puntos finales de respaldo, etc.).