We’ve had several reasons to use Apache’s ProxyPass features in the past, and a basic configuration (to redirect one website to another) is easy to find online.

I ran into a tricker variation of this requirement today - I needed to redirect one virtualhost (on server A) to another virtualhost (on server B).

Since virtualhosts rely on the HTTP “Host:” header, it was necessary to use the following syntax within the virtualhost configuration:

{% highlight conf %} RequestHeader set Host “target.host.whichisvirtual.com” ProxyPreserveHost On

ProxyPass / http://target.host.whichisvirtual.com/ ProxyPassReverse / http://target.host.whichisvirtual.com/ {% endhighlight %}

Without setting (and then preserving) the host header, the target server would return a 404, since it wouldn’t be able to match the request with a configured virtual host.

As an optional extra, adding : {% highlight conf %} LogLevel debug {% endhighlight %}

Into the virtualhost config provides additional details on the ProxyPass process in the configured error log.

You’ve successfully subscribed to 👨‍💻 Funky Penguin
Welcome back! You’ve successfully signed in.
Great! You’ve successfully signed up.
Your link has expired
Success! Check your email for magic link to sign-in.