Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Httpd Wiki" for change 
notification.

The following page has been changed by slive:
http://wiki.apache.org/httpd/Recipes/Different_UserIDs_Using_Reverse_Proxy

New page:
One frequently requested feature is to run different virtual hosts under 
different userids.  Unfortunately, due to the basic nature of unix permission 
handling, this is impossible.  (Although it is possible to run CGI scripts 
under different userids using suexec or cgiwrap.)  You can, however, get the 
same effect by running multiple instances of Apache httpd and using a reverse 
proxy to bring them all into the same name space.

This same technique can also be useful if you want certain virtual hosts to be 
run under a non-threaded server (prefork) while others run with threading 
(worker or event).

== Main host ==

This instance does not actually serve requests, but rather proxies them to 
other servers running on other ports.

{{{
Listen 80
NameVirtualHost *:80
User httpd
Group httpd

ProxyRequests Off

<VirtualHost *:80>
  ServerName host1.example.com
  ProxyPass / http://localhost:81/
  ProxyPassReverse / http://localhost:81/
</VirtualHost>

<VirtualHost *:80>
  ServerName host2.example.com
  ProxyPass / http://localhost:82/
  ProxyPassReverse / http://localhost:82/
</VirtualHost>
}}}

== Back-end hosts ==

These hosts do the real work.

=== Host 1 ===
{{{
Listen 81
ServerName host1.example.com:81
User host1user
Group host1group
DocumentRoot /usr/local/apache2/htdocs1
# etc...
}}}

=== Host 2 ===
{{{
Listen 82
ServerName host2.example.com:82
User host2user
Group host2group
DocumentRoot /usr/local/apache2/htdocs2
# etc...
}}}

== Combining into one config file ==

If the virtual (back-end) hosts share many common config elements, it may be 
easier if all the hosts share a config file.  This can be accomplished by 
wrapping the parts above in <IfDefine hostx> sections, and then using 
{{{
apachectl -Dhostx -k start
}}}
to start each host.

Reply via email to