reverso digitalocean conf proxy nginx

digitalocean - Proxy_pass dinámico a $ var con nginx 1.0



reverse proxy nginx digitalocean (3)

Recientemente me he topado con esta necesidad y he descubierto que para usar variables en un destino proxy_pass, debe establecer un resolver como su error.log probablemente contenga algo así como no resolver defined to resolve ...

La solución en mi caso fue configurar lo siguiente usando Google para resolución de DNS:

location ~ /proxy/(.*) { resolver 127.0.0.1 [::1]; proxy_pass http://$1; }

En tu caso, esto debería funcionar:

location /proxy { resolver 127.0.0.1 [::1]; set $target http://proxytarget.example.com; proxy_pass $target; }

Para que funcione el resolver 127.0.0.1, necesita instalar bind9 localmente. Para Debian / Ubuntu:

sudo apt-get install bind9

Más información sobre nginx y proxy_pass dinámico aquí: http://www.nginx-discovery.com/2011/05/day-51-proxypass-and-resolver.html

Editar: Reemplazó el DNS público anterior por uno local por issues seguridad.

Estoy tratando de proxy una solicitud a diferentes objetivos en función de una variable de entorno. Mi enfoque fue poner la URL objetivo en la variable personalizada $ target y darle esto a proxy_pass.

Pero el uso de una variable con proxy_pass no parece funcionar. Esta simple configuración lleva a una respuesta de "502 Bad Gateway" desde nginx.

server { listen 8080; server_name myhost.example.com; access_log /var/log/nginx/myhost.access.log; location /proxy { set $target http://proxytarget.example.com; proxy_pass $target; } }

La misma configuración sin la variable funciona:

server { listen 8080; server_name myhost.example.com; access_log /var/log/nginx/myhost.access.log; location /proxy { proxy_pass http://proxytarget.example.com; } }

¿Realmente no es posible usar proxy_pass de esta manera o simplemente estoy haciendo algo mal?


Tropezó con el mismo problema

proxy_pass no resolvió mis variables, hasta que descubrimos que nuestro servidor DNS tenía un problema

se puede verificar con este cmd por cierto

nslookup your-domain your-dns-ip


location / { if ($args ~ "^url=(.+)") { #gets the "url" get parameter set $key1 $1; proxy_pass $key1;#use the parameter as proxy address } }