【问题标题】:Apache HTTP Server reverse proxying from port 80 to port *Apache HTTP Server 从端口 80 反向代理到端口 *
【发布时间】:2019-07-04 19:03:09
【问题描述】:

我有一个 Suse Linux 服务器,其中一个 Web 应用程序在端口 51058 上侦听。 我现在想使用 Apache HTTP Server 将用户从端口 80 转发到此端口,以便当用户在浏览器中键入 url 时,用户会在端口 51058 上看到应用程序。 我不想使用重定向,因为我还必须打开端口 51058。是否可以使用 Apache HTTP Server 执行类似的操作? 如果是,我该怎么做?

【问题讨论】:

    标签: apache apache2 reverse-proxy suse


    【解决方案1】:

    您可以将监听端口从 51058 更改为 80,并将虚拟主机配置为使用端口 80

    【讨论】:

    • 我无法更改应用程序的端口。它是一个 SAP 系统应用程序,但要解释它就太远了。重要的是这个应用程序在 51058 端口上侦听,我无法更改它。如果问题不清楚,我深表歉意。
    【解决方案2】:

    您需要使用 Apache 使用 mod_proxy 模块设置反向代理。 您可以在端口 80 上使用类似这样的虚拟主机:

    <VirtualHost *:80>
        ServerName MyServerHostName
    
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyPass / http://localhost:51058/
        ProxyPassReverse / http://localhost:51058/
    
    </VirtualHost>
    

    这里我假设 51058 是一个非安全 (HTTP) 端口。

    【讨论】:

    • 看起来不错,但我没有这样的文件夹,称为 /etc/apache2/mod_proxy。安装时我有什么问题吗?
    • 不需要这样的文件夹,只需几个 LoadModule 声明即可加载 mod_proxy 模块:LoadModule proxy_module lib/apache/mod_proxy.so LoadModule proxy_http_module lib/apache/mod_proxy_http.so。您可能需要查看几个教程,例如 this,以了解如何配置您的 Apache 服务器。
    • 大功告成。现在它可以工作了,我只有正确的模块有问题。我必须安装:a2enmod 代理 a2enmod proxy_html a2enmod proxy_http 现在它完全按照我想要的方式工作,大。唐斯 =) !