尝试确定 Apache 应用服务器的重写、重定向或代理

尝试确定 Apache 应用服务器的重写、重定向或代理

我在 App.domain.com 内部运行一个 Apache Web 应用程序服务器。它通过在防火墙/网关处使用端口转发作为 app.domain.com:10080 向外部公开。

Access 通常在内部 ( http://app.domain.com) 和外部 ( http://app.domain.com:10080) 都有效,但在开发和配置期间(从外部进行),应用程序不知何故将端口 (10080) 存储在其配置中,并且偶尔会在某些提供的 URL 中弹出。然后显示为"http://app.domain.com:10080/some/text/..."

从开发发生的外部来看这不是问题,并且可以正确解决,但从内部访问时会产生错误,因为服务器不是在端口 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>

或者我应该使用重定向:

<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?

我尝试了几个选项,但似乎仍然无法让它正常工作,因为某些页面(代理/重定向)似乎无法正确呈现,也许我的条目还不够正确。

我最终需要对 https 做同样的事情,但我首先尝试让它在 http 上运行,然后再进行复制。

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

谢谢您的指点。

答案1

重定向:向客户端返回重定向响应。

改写:在客户端不知情的情况下内部更改 URL 指向的内容。它可以选择向客户端返回重定向响应,但这要复杂得多,而且容易出错。

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

如果无法在应用程序中修复此问题,则重定向将是最简单、最容易和最快的解决方案。

对于你的情况,你需要使用:

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

相关内容