尝试确定Apache应用程序服务器的重写,redirect或代理

我在内部运行一个Apache Web应用程序服务器,在App.domain.com。 它通过在防火墙/网关上使用端口转发作为app.domain.com:10080从外部暴露出来。

除了在开发和configuration(从外部完成)之外,Access一般可以在内部( http://app.domain.com )和外部( http://app.domain.com:10080 )进行工作,不pipe怎样,应用程序将端口(10080)存储在其configuration中,这偶尔会popup一些所服务的URL。 然后显示为"http://app.domain.com:10080/some/text/..."

这不是发生在外部的问题,而是正确parsing,但从内部访问时会产生错误,因为服务器不在端口10080上运行,而是在端口80上运行。

我现在试图解决这个问题,并想知道哪个是解决这个问题的首选方法。 我应该使用单独的VirtualHost指令简单地将10080上的请求代理到80端口:

 <VirtualHost *:10080> ProxyRequests Off ProxyPreserveHost On <Proxy *> AddDefaultCharset Off Order allow,deny Allow from all </Proxy> ProxyPass / http://app.domain.com/ ProxyPassReverse / http://app.domain.com/ </VirtualHost> 

或者我应该使用redirect

 <VirtualHost *:10080> ##{and any one of:} Redirect permanent / http://app.domain.com/ ## OR ## Redirect / http://%{HTTP_HOST}$1 ## OR ## Redirect / http://app.domain.com/ </VirtualHost> 

或者这是否需要一个mod_rewrite?

我已经尝试了几个选项,但我似乎还没有得到正确的工作,因为一些页面(代理/redirect)似乎没有正确渲染,也许我的input做得不对。

我最终还是需要为https做同样的事情,但是我首先试着让它在http上工作,然后我可以复制它。

 Server version: Apache/2.4.18 (Ubuntu) / Server built: 2017-09-18T15:09:02 

感谢任何指针。

redirect :将redirect响应返回给客户端。

重写 :在没有客户的知识的情况下,内部更改URL指向的内容。 它可以select性地将redirect响应返回给客户端,但是这更复杂且容易出错。

代理 :将请求转发到其他地方,并将响应返回给客户端。

如果在应用程序中修复这个问题不是一个选项, redirect将是最简单,最简单和最快的解决scheme。

在你的情况下,你会想要使用:

 Redirect permanent "/" "http://app.domain.com:80/"