【问题标题】:How to redirect URL with port to URL with context?如何将带有端口的 URL 重定向到带有上下文的 URL?
【发布时间】:2019-03-27 06:51:32
【问题描述】:

我有一个安装了 apache(2.4.18) 的服务器

我在服务器上安装了多个应用程序,例如 Grafana、Sonarqube 和 MySQL 企业监视器 (MEM)

每个应用程序都有这样的 URL

http://test.com:9000

http://test.com:3000

我正在寻找一种解决方案,它允许我将此带有端口的 URL 重定向到带有上下文的 URL,类似这样的东西

http://test.com:9000  --> http://test.com/sonar

http://test.com:3000 --> http://test.com/grafana

我在 /etc/apache2/sites-enabled/000-default.conf 文件中添加了一些代码

Redirect permanent /sonar http://test.com:9000

Redirect permanent /grafana http://test.com:3000

但是当我在网络浏览器中输入http://test.com/sonar 时,它只会重定向到http://test.com:9000 URL

我希望 http://test.com/sonar 这个 URL 保留在 Web 浏览器上

【问题讨论】:

    标签: apache apache2


    【解决方案1】:

    如果您使用Redirect permanent,服务器会将301 响应发送回客户端(连同新的Location)。这将导致浏览器发出新请求,这次是新位置,并且新位置也将显示在浏览器地址栏中。 您需要的是反向代理。为此,您需要确保在您的 apache 配置中启用了 mod_proxy(通常默认情况下启用),并将类似这样的内容放入您的 .conf 文件中:

    ProxyPreserveHost On
    ProxyPass        /sonar   http://127.0.0.1:9000
    ProxyPassReverse /sonar   http://127.0.0.1:9000
    ProxyPass        /grafana http://127.0.0.1:3000
    ProxyPassReverse /grafana http://127.0.0.1:3000
    

    您可能还必须让您的应用程序知道它们在非 root 上下文中运行(通过进行一些配置更改):

    http://docs.grafana.org/installation/behind_proxy/

    https://docs.sonarqube.org/latest/setup/install-server/

    【讨论】:

    • 嗨,我试过了,但在 /sonar 上下文中得到了一个空白页
    【解决方案2】:

    您需要代理请求而不是重定向它们。 使用 official apache proxy documentation

    中提到的 ProxyPass 指令

    例如,在您的配置中添加这个位置块:

    <Location "/sonar">
        ProxyPass "http://test.com:9000"
    </Location>
    

    【讨论】:

    • 嗨,我试过了,但在 /sonar 上下文中得到了一个空白页
    • 检查您的声纳配置是否设置正确以接收代理请求。
    猜你喜欢
    • 1970-01-01
    • 2015-06-08
    • 2012-07-17
    • 2019-05-28
    • 2014-07-12
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    相关资源
    最近更新 更多