In some configurations it’s desirable to share apache2 and Zimbra on the same host. This would mean that either one of the two services shuold run on non-standard port, that is 80 and 443. If this is not an issue,
- change the ports apache2 is listening to in /etc/apache2/ports.conf
- change the portz zimbra is listening to using zmprov (zmprov gs zimbraserver zimbraMailPort 81)
But thanks to apache2‘s mod_proxy, you can have both services on the standard web ports.
These commands work on Debian/Ubuntu servers.
At first, enable apache2’s modules:
a2enmod proxy a2enmod proxy_html a2enmod proxy_http
Make sure the use of mod_proxy is allowed, by changing /etc/apache2/mods_available/proxy.conf
Allow from all
In this case I want to proxy SSL, so before starting you will need to move Zimbra HTTPS away from port 443 (I moved to 444). Copy your Zimbra certificate files to a directory accessible by apache. I choose /etc/apache2/ssl.
To allow automatic redirect from / to /zimbra, as in your normal Zimbra install, add the following line to your main <Directory> stanza:
RedirectMatch ^/$ /zimbra/
Then, edit you apache2 config file and add:
SSLProxyEngine on SSLCertificateFile /etc/apache2/ssl/host.crt SSLCertificateKeyFile /etc/apache2/ssl/host.key SSLCACertificateFile /etc/apache2/ssl/ca_bundle.crt ProxyRequests On ProxyPreserveHost On ProxyVia full <Location "/service"> ProxyPass https://your_zimbra_ip:444/service ProxyPassReverse https://your_zimbra_ip:444/service ProxyPassReverse / ProxyHTMLExtended On ProxyHTMLURLMap /service /service </Location> <Location "/zimbra"> ProxyPass https://your_zimbra_ip:444/zimbra ProxyPassReverse https://your_zimbra_ip:444/zimbra ProxyPassReverse / ProxyHTMLExtended On ProxyHTMLURLMap /zimbra /zimbra </Location> <Location "/home"> ProxyPass https://your_zimbra_ip:444/home ProxyPassReverse https://your_zimbra_ip:444/home ProxyPassReverse / ProxyHTMLExtended On ProxyHTMLURLMap /home /home </Location> # CalDAV <Location "/principals"> ProxyPass https://your_zimbra_ip:444/principals ProxyPassReverse https://your_zimbra_ip:444/principals ProxyPassReverse / ProxyHTMLExtended On ProxyHTMLURLMap /principals /principals </Location> # DAV <Location "/dav"> ProxyPass https://your_zimbra_ip:444/dav ProxyPassReverse https://your_zimbra_ip:444/dav ProxyPassReverse / ProxyHTMLExtended On ProxyHTMLURLMap /dav /dav </Location> #Printing and HTML interface <Location "/h"> ProxyPass https://your_zimbra_ip:444/h ProxyPassReverse https://your_zimbra_ip:444/h ProxyPassReverse / ProxyHTMLExtended On ProxyHTMLURLMap /h /h </Location> # img for mobile interface <Location "/img"> ProxyPass https://your_zimbra_ip:444/img ProxyPassReverse https://your_zimbra_ip:444/img ProxyPassReverse / ProxyHTMLExtended On ProxyHTMLURLMap /img /img </Location>
Restart your apache2, and you should be done!
P.S. in case you wish to proxy https:
a2enmod ssl
Add the following to your /etc/apache2/sites-available/default-ssl
SSLProxyEngine on ProxyRequests On ProxyPreserveHost On ProxyVia full
this certainly works but
– login directly to zimbra has great performance.
– login via this solution takes over 2 minutes to complete login and then working the web interface is horribly slow
Hi,
thx a lot. This very important step is not documented at Zimbra itselfs wiki.
Works for Zimbra Open Source Version 8.8.9
Thanks again!
Otto
I’m surprised it still works after 8 years 😀 I suspect there are more directories to proxy nowadays.