apache mod_proxy或mod_rewrite用于隐藏path后面的web服务器的根目录

我有2个apache 2.2.21一个外部和一个内部,我需要映射内部apache在外部apache后面的path,但我有一些绝对url的问题。

我试过这些configuration:

RewriteEngine on RewriteRule ^/externalpath/(.*)$ http://internal-apache.test.com/$1 [L,P,QSA] ProxyPassReverse /externalpath/ http://internal-apache.test.com/ 

要么

 <Location /externalpath/> ProxyPass http://internal-apache.test.com/ ProxyPassReverse http://internal-apache.test.com/ </Location> 

我的内部apache使用search资源的绝对path作为图像,CSS和HTML,我现在不能改变它。

有些build议? 谢谢

一些替代scheme:

)重写内部的应用程序使用相对path,而不是绝对的。

)重新部署内部的应用程序在一个子目录,而不是在你的内部apache的根。

)一个和两个往往不太可能发生…如果幸运的话,内部应用程序只使用两个或三个子目录,这些子目录在您的主站点上是未使用的,只需编写一堆ProxyPass行:

 # Expose Internal App to the internet. ProxyPass /externalpath/ http://internal-apache.test.com/ ProxyPassReverse /externalpath/ http://internal-apache.test.com/ # Internal app uses a bunch of absolute paths. ProxyPass /css/ http://internal-apache.test.com/css/ ProxyPassReverse /css/ http://internal-apache.test.com/css/ ProxyPass /icons/ http://internal-apache.test.com/icons/ ProxyPassReverse /icons/ http://internal-apache.test.com/icons/ 

)为内部应用程序创build一个单独的子域,并简单地反向代理一切:

 <VirtualHost *:80> ServerName app.test.com/ # Expose Internal App to the internet. ProxyPass / http://internal-apache.test.com/ ProxyPassReverse / http://internal-apache.test.com/ </VirtualHost> 

)有时开发人员完全无能为力,他们的应用程序不仅产生绝对的URL,甚至包括在他们的URL的主机名部分,产生的HTML代码如下所示: <img src=http://internal-apache.test.com/icons/logo.png>

A )您可以使用水平分割DNS和场景4的组合解决scheme。内部和外部用户都使用internal-apache.test.com地址,但是您的内部DNS直接指向internal-apache.test的IP地址。 com的服务器。 对于外部用户,internal-apache.test.com的公共logging指向公共Web服务器的IP地址,然后可以使用解决scheme4。

B )你实际上可以让apache不仅代理请求到你的内部apache,而且还会在响应主体被传送给用户之前重写。 (通常,代理只重写HTTP头/响应)。 mod_substitute在Apache 2.2。 我没有testing,如果它与mod_proxy很好,但也许以下工作:

 <Location /externalpath/> ProxyPass http://internal-apache.test.com/ ProxyPassReverse http://internal-apache.test.com/ AddOutputFilterByType SUBSTITUTE text/html Substitute "s|internal-apache.test.com/|public-apache.test.com/externalpath/|i" </Location>