mod_proxy 代理并重定向到特定路径

mod_proxy 代理并重定向到特定路径

今天我有两台 Apache 服务器,服务器 A(192.168.0.5),服务器 B(192.168.0.10),都在同一个 80 端口上运行。

实际请求来自服务器 a,并且根据我的配置它传递到服务器 b(使用 mod_proxy),这是可行的。

服务器A配置:

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 来代理和重定向该 url。

这是我在服务器 A 中使用 mod_proxy 的其他配置

 RewriteCond %{HTTP_HOST}   ^mycloud\.mydomain\.com$ [NC]
 RewriteRule   ^/(.*)$ http://mycloud.mydomain.com/$1  [P]

我希望当用户访问 mycloud.mydomain.com 时 mod_proxy 重定向并代理到 mycloud.mydomain.com/owncloud。

我怎样才能做到这一点?


由我编辑

我的新配置是:

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/

我正在重定向到 owncloud.mydomain.com,但页面渲染效果不佳(例如某些 css 无法加载),但如果我仅添加 /owncloud,则一切正常,但我不希望用户添加 /owncloud。这没有按预期工作,我做错了什么吗?

答案1

使用以下行稍微改变这些代理:

 RewriteRule ^/(.*)$ http:///192.168.0.10:80/owncloud/$1 [P,L]
 ProxyPassReverse / http://192.168.0.10:80/owncloud/

这些行应该替换这些行:

ProxyPass / http://192.168.0.10:80/
ProxyPassReverse / http://192.168.0.10:80/

上面几行表示进入的连接/转到http:///192.168.0.10:80/owncloud/(RewriteRule),并且从代理服务器返回的连接/owncloud/被重写到/(ProxyPassReverse)。

答案2

我也遇到了同样的问题。我认为 apache 配置是正确的,但你需要在 owncloud 的 config.php 中进行一些更改,例如

'overwritehost' => 'apacheVhost.domain.com',

相关内容