dynamicproxy_pass到$ var与nginx 1.0

我正在尝试根据环境variables将请求代理到不同的目标。 我的方法是将目标url放入自定义variables$ target中,并将其传递给proxy_pass。

但是使用proxy_pass的variables似乎不起作用。 这个简单的configuration会导致nginx的“502 Bad Gateway”响应。

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; } } 

没有variables的同样的configuration工作:

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

是否真的不可能这样使用proxy_pass或者我只是做错了什么?

我最近偶然发现了这个需求,发现为了在proxy_pass目的地中使用变量,你需要设置一个解析器作为你的error.log最有可能包含像no resolver defined to resolve ...东西no resolver defined to resolve ...

在我的情况下解决方案是设置以下使用谷歌DNS解析:

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

在你的情况下,这应该工作:

 location /proxy { resolver 8.8.8.8; set $target http://proxytarget.example.com; proxy_pass $target; } 

有关nginx和动态proxy_pass更多信息,请访问: http : proxy_pass

偶然发生同样的问题

proxy_pass没有解决我的变数,直到我们发现我们的DNS服务器有问题

可以用这个cmd顺便检查一下

 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 } }