Dynamic proxy_pass hosts

In Apache it is possible to dynamically alter the proxy_pass remote
host, i.e. like this

RewriteRule ^/proxy_everything/(.*)$ http://$1 [P]

So I cant extract the host from the URI, or from the environment
variable etc.

Is it possible to do the same with nginx?

Thanks in advance,
Igor K…

Hello!

On Thu, Oct 22, 2009 at 01:17:16PM +0400, Igor K. wrote:

In Apache it is possible to dynamically alter the proxy_pass remote
host, i.e. like this

RewriteRule ^/proxy_everything/(.*)$ http://$1 [P]

So I cant extract the host from the URI, or from the environment
variable etc.

Is it possible to do the same with nginx?

Yes, proxy_pass supports variables since 0.6.18. Note that you
must have resolver defined in nginx config if possible upstream
hosts include arbitrary hostnames (i.e. not only ip addresses and
names defined via upstream{} blocks).

http://wiki.nginx.org/NginxHttpProxyModule#proxy_pass
http://wiki.nginx.org/NginxHttpCoreModule#resolver

Note that wiki topics are a bit garbled, probably it’s a good idea
to consult original docs too (use google translate if you don’t
know Russian):

http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_pass
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#resolver

Maxim D.

Maxim D. wrote:

variable etc.

Note that wiki topics are a bit garbled, probably it’s a good idea
to consult original docs too (use google translate if you don’t
know Russian):

http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_pass
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#resolver

Maxim D.

Thanks, Maxim! Well, I am russian, so I can read the docs. Are they more
up-to-date or detailed? I usually read the wiki

Hello!

On Thu, Oct 22, 2009 at 03:51:41PM +0400, Igor K. wrote:

So I cant extract the host from the URI, or from the environment
http://wiki.nginx.org/NginxHttpCoreModule#resolver
Thanks, Maxim! Well, I am russian, so I can read the docs. Are they
more up-to-date or detailed? I usually read the wiki

The problem with wiki is that it’s rarely synced with official
docs and may be seriously out of date. Additionally as it’s wiki
it’s regularly edited by users who ofter unaware how things really
work, and this results in wrong/misleading information in many cases.

In this particular case proxy_pass description in wiki has no full
documentation on proxy_pass work with variables (it has some
user-contributed content about variables in proxy_pass, but
written from completely different and wrong point of view), while
resolver just has no description.

Maxim D.