我想做的事
使所有http://cloud.example.com/显示为http://webmail.example.com/cloud/
- http://cloud.example.com:目标网站
- http://webmail.example.com:使用 mod_proxy 运行 apache2 的网站,作为反向代理(但不仅限于,还有 webmail)。
- http://webmail.example.com/cloud:我希望http://cloud.example.com出现的 URL。
我是如何尝试做到的
<VirtualHost *:80>
ServerName webmail.example.com
DocumentRoot /var/www/roundcubemail-1.1.4
Loglevel debug
ErrorLog /var/log/apache2/roundcube.error
# %t : Time
# %a : client ip
# %f : filename
# %T : processing time
# %s : status
# %>s : Final status
LogFormat "%t %a %{Referer}i -> %U%q, matches %f, %s>%>s(served in %{ms}T µs)" custom
# was "combined"
CustomLog /var/log/apache2/roundcube.access custom
ProxyPass "/cloud/" "http://cloud.example.com/"
ProxyPassReverse "/cloud/" "http://cloud.example.com/"
# The ProxyRequests directive should usually be set off when using ProxyPass.
# src:https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass
ProxyRequests off
# https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypreservehost
# This option should normally be turned Off.
ProxyPreserveHost off
</VirtualHost>
日志
[14/Jun/2016:13:42:37 +0100] 192.168.211.202 - -> /cloud/, matches proxy:http://cloud.example.com/, 200>200(served in 5 µs)
[14/Jun/2016:13:42:42 +0100] 192.168.211.202 - -> /core/css/styles.css?v=9a1b1350ff46cbc098bc6c7acca55c1c, matches /var/www/roundcubemail-1.1.4/core, 404>404(served in 0 µs)
[14/Jun/2016:13:42:42 +0100] 192.168.211.202 - -> /core/css/header.css?v=9a1b1350ff46cbc098bc6c7acca55c1c, matches /var/www/roundcubemail-1.1.4/core, 404>404(served in 0 µs)
[14/Jun/2016:13:42:42 +0100] 192.168.211.202 - -> /core/css/mobile.css?v=9a1b1350ff46cbc098bc6c7acca55c1c, matches /var/www/roundcubemail-1.1.4/core, 404>404(served in 0 µs)
[14/Jun/2016:13:42:42 +0100] 192.168.211.202 - -> /core/css/icons.css?v=9a1b1350ff46cbc098bc6c7acca55c1c, matches /var/www/roundcubemail-1.1.4/core, 404>404(served in 0 µs)
[14/Jun/2016:13:42:42 +0100] 192.168.211.202 - -> /core/css/fonts.css?v=9a1b1350ff46cbc098bc6c7acca55c1c, matches /var/www/roundcubemail-1.1.4/core, 404>404(served in 0 µs)
[14/Jun/2016:13:42:42 +0100] 192.168.211.202 - -> /core/css/apps.css?v=9a1b1350ff46cbc098bc6c7acca55c1c, matches /var/www/roundcubemail-1.1.4/core, 404>404(served in 0 µs)
...
日志的第一行显示请求“/cloud/”路径成功从代理网站检索资源,但所有后续资源都不是从云服务器获取,而是从网络邮件服务器本身获取。
How can I take care of this ?
I have proxy_html enabled.
root@messagerie[CHROOT][10.10.10.20] ~ # a2query -m
proxy (enabled by site administrator)
php5 (enabled by maintainer script)
setenvif (enabled by maintainer script)
ssl (enabled by site administrator)
deflate (enabled by maintainer script)
authn_core (enabled by maintainer script)
env (enabled by maintainer script)
mime (enabled by maintainer script)
auth_basic (enabled by maintainer script)
access_compat (enabled by maintainer script)
authz_core (enabled by maintainer script)
xml2enc (enabled by site administrator)
authz_host (enabled by maintainer script)
alias (enabled by maintainer script)
authz_user (enabled by maintainer script)
autoindex (enabled by maintainer script)
negotiation (enabled by maintainer script)
socache_shmcb (enabled by site administrator)
proxy_http (enabled by site administrator)
status (enabled by maintainer script)
proxy_html (enabled by site administrator)
filter (enabled by maintainer script)
authn_file (enabled by maintainer script)
dir (enabled by maintainer script)
mpm_prefork (enabled by maintainer script)
root@messagerie[CHROOT][10.10.10.20] ~ #
As suggested by @HBruijn I've added
But then the server received requests for /index.php/apps/files/, so I added that as well
Got rid of all the 404 errors, but couldn't get owncloud to work nevertheless.
http://webmail.example.com/cloud redirects to http://webmail.example.com/index.php/apps/files/ which displays this nice error :
EDIT : fixed !, some additional configuration was needed on owncloud's part, namely trusted_proxies and overwritewebroot.