今天我有两个Apache服务器,服务器A(192.168.0.5),服务器B(192.168.0.10),都运行在同一个80端口。
实际的请求是从服务器A和我的configuration传递到服务器B(使用mod_proxy),这是工作。
服务器configuration:
NameVirtualHost * <VirtualHost *> ServerName owncloud.mydomain.com ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://192.168.0.10:80/ ProxyPassReverse / http://192.168.0.10:80/ <Location /> Order allow,deny Allow from all </Location> </VirtualHost>
当我访问mycloud.mydomain.com的请求是访问使用服务器A,但与代理它“代理”服务器B,然后我看到服务器B中的内容,这是伟大的,但现在我的内容是在mycloud.mydomain.com / owncloud,我不知道如何可以使用mycloud.mydomain.com代理和redirect该url。
这是我在服务器A中使用mod_proxy的其他configuration
RewriteCond %{HTTP_HOST} ^mycloud\.mydomain\.com$ [NC] RewriteRule ^/(.*)$ http://mycloud.mydomain.com/$1 [P]
我想当一个用户访问mycloud.mydomain.com的mod_proxyredirect和代理到mycloud.mydomain.com/owncloud。
我怎样才能做到这一点?
编辑我
我的新configuration是:
RewriteCond %{HTTP_HOST} ^owncloud\.mydomain\.com$ [NC] RewriteRule ^/(.*)$ http://192.168.0.10:80/owncloud/$1 [P,L] ProxyPassReverse / http://192.168.0.10:80/owncloud/
我redirectowncloud.mydomain.com但页面不能很好地呈现(像一些CSS不加载),但如果我只是添加/ owncloud,一切正常,但我不希望用户添加/ owncloud。 这不是按预期工作,做我做错了什么?
使用下面这些行稍微改变代理:
RewriteRule ^/(.*)$ http:///192.168.0.10:80/owncloud/$1 [P,L] ProxyPassReverse / http://192.168.0.10:80/owncloud/
这些行应该replace这些行:
ProxyPass / http://192.168.0.10:80/ ProxyPassReverse / http://192.168.0.10:80/
上面的代码表示连接进入/转到http:///192.168.0.10:80/owncloud/ (RewriteRule),连接从代理服务器/owncloud/ get被重写到/ (ProxyPassReverse)。
我正在做同样的麻烦。 我认为Apache的configuration是正确的,但你需要一些像owncloud的config.php的变化
'overwritehost' => 'apacheVhost.domain.com',