I'm interested in running a reverse proxy with 2-3 virtual machines behind it. Each internal server will run multiple virtual hosts, and rather than manually configuring each individual vhost on the proxy (a variety of vhosts come and go too often for this to be practical), I would like to use something which can employ pattern matching in a sequential order to find the appropriate back-end server. For example:
Server 1: *.dev.mysite.com
Server 2: *.stage.mysite.com
Server 3: *.mysite.com, dev.mysite.com, stage.mysite.com, mysite.com
Server 4: *
In the above configuration, task.dev.mysite.com would go to Server 1, dev.mysite.com would go to Server 3, yoursite.stage.mysite.com to Server 2, www.mysite.com to Server 3, and yoursite.com to Server 4.
I've looked into using Squid, Varnish, and nginx so far. I have my opinions regarding their respective desirability and general suitability, but it's not readily apparent if any of them can handle dynamic server selection in this manner and not require per-vhost configuration. Apache on the other hand can do this handily and simply, but otherwise (aside from being well-known and familiar) seems very poorly suited to the partly-performance-serving task.
Performance isn't actually a major concern yet, but it seems foolish to use Apache if another system will perform far better and can also handle the desired 'hands-free' configuration. But so is frequently having to adjust the gateway for all production services and risk network-wide outage...and so also is setting oneself up for longer downtime later if Apache becomes a too-small bottleneck.
Which of these (or other) reverse proxies can do it/would do it best?
And maybe I should post this as a separate question, but if Apache is the only practical option, how safe/reliable/predictable is apache-mpm-event in apache2.2 (Ubuntu 12.04.1) particularly for a dedicated reverse proxy? As I understand it the Event MPM was declared "safe" as of 2.4 but it's unclear whether reaching stability in 2.4 has any implications for the older (2.2) versions available in official/stable package channels of various distros.
Personally, I use Pound. I would go into more detail but this question will be closed soon as its a shopping question.
I reworked most of my front end servers to go through a few Pound reverse proxies, which has let me cut my SSL certificate cost and IP usage greatly.
I have had them running for around 9 months now without a single problem so I can vouch for the reliability.
You can also do wildcard matching in the setup in the exact manner you want:
Varnish can definitely do this, if it's what you want to do.
You define your backends in your vcl file, and then in vcl_recv you can use a few regexes like so:
I wouldn't personally recommend using the same varnish server for staging and production, I'd at least run a separate instance on another port, but that's neither here nor there.