【问题标题】:Redireting Https requests on Apache for Wildfly在 Apache 上为 Wildfly 重定向 Https 请求
【发布时间】:2018-02-01 22:13:55
【问题描述】:

我正在使用 Apache 虚拟主机来运行多个网站。我在 Front 中使用 apache,这个 apache 正在将 url 请求重定向到 wildfly 服务器。

我的 Apache 配置对于使用以下代码的 http 请求运行良好

<VirtualHost *:80>
    ServerAdmin webmaster@mysitedemo.com
    ServerName mysitedemo.com
    ServerAlias www.mysitedemo.com
    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    ErrorLog "logs/mysitedemo-error_log"
    CustomLog "logs/mysitedemo-access_log" common
</VirtualHost>

现在我还想处理我在 vhosts 文件中添加以下代码的 Https 请求

<VirtualHost *:443>
    ServerAdmin webmaster@mysitedemo.com
    ServerName mysitedemo.com
    ServerAlias www.mysitedemo.com
    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / https://localhost:8443/
    ProxyPassReverse / https://localhost:8443/
    ErrorLog "logs/mysitedemo-error_log"
    CustomLog "logs/mysitedemo-access_log" common
</VirtualHost>

但它不能正常工作给我,以下错误

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请通过 webmaster@mysitedemo.com 联系服务器管理员,告知他们此错误发生的时间,以及您在此错误之前执行的操作。

服务器错误日志中可能会提供有关此错误的更多信息。

此外,在尝试使用 ErrorDocument 处理请求时遇到 500 Internal Server Error 错误。

我已经在 Wildfly 服务器上设置了 SSL。我是否也需要为 Apache 购买单独的 SSL,还是可以在 Apache 上使用相同的 SSL?如果是,那么请解释一下我该怎么做?

【问题讨论】:

  • 我已经修复了内部服务器错误,这是由于我的 SSLProxyEngine 未启用。现在请帮助我知道我是否需要为 apache 购买单独的 SSL,因为 SSL 已经在 Wildfly 端口 8443 上运行?

标签: apache ssl wildfly virtualhost virtual-hosts


【解决方案1】:

在 Apache 上为 Wildfly 重定向 Https 请求

如果使用 cmets 中的附加信息来扩充您的问题中的信息,您会发现您实际上并没有像您在问题的各个地方所声称的那样重定向客户。在重定向的情况下,服务器将告诉客户端请求不同的服务器。您在此处所做的是 forwarding,您的 Apache 充当反向代理并将来自客户端的请求转发到 Wildfly 服务器,并将来自 Wildfly 的响应发送回客户端。

由于在这种情况下,客户端仅直接与 Apache 服务器交互,因此如果客户端使用 HTTPS,则该 Apache 服务器将执行 TLS 握手。 这意味着 Apache 必须配置适当的证书并启用 SSL。 然后 Apache 将终止来自客户端的原始 HTTPS 连接。由于您已将 ProxyPass 配置为 HTTPS url,Apache 将与代理的 Wildfly 服务器进行另一个 HTTPS 连接。而且,从客户端的角度来看,Wildfly 服务器是否启用 HTTPS 并不重要——重要的是如何访问 Apache 服务器。

【讨论】:

  • 非常感谢您的帮助,先生。
  • 最后一个问题,先生。我有在 Wildfly 服务器上使用过的 SSL 证书(demo.keystore)。我可以在 apache 上使用相同的证书吗?还是我必须为apache购买新的。如果我可以使用相同的证书,那么请告诉我如何使用相同的证书??
  • @Tarun:在多个主机上重复使用同一个证书没有技术限制,但是 URL 中使用的名称当然必须与证书的主题相匹配。但是您应该检查您的颁发者 CA 是否添加了合法的使用限制。除此之外,与使用不同的证书相比,将多个系统配置为使用相同的证书并没有什么特别的。
  • 感谢先生的大力帮助。
【解决方案2】:

要从https://siteA 重定向到https://siteB,您首先需要为站点A(当然还有站点B)提供证书,然后正确配置它。在您的情况下,您既没有配置证书,也没有在端口 443 上配置 https。相反,您刚刚将端口 443 配置为另一个 HTTP(但不是 HTTPS)服务器,这当然会在尝试使用 HTTPS 访问它时出错。

【讨论】:

  • 谢谢先生的回复。我的内部服务器错误问题已解决。这是由于 SSLProxyEngine,因为我没有启用 SSLProxyEngine。启用后。我的内部服务器错误消失了。
  • 先生,其实我的问题不是从一个网站导航到另一个网站。实际上,当 apache 收到 HTTPS 请求时,它应该通过安全连接重定向到 Wildfly 端口 8443。现在我们在 Wildfly 上运行 https。我必须为 apache 添加单独的 ssl 文件吗??
  • @Tarun:在这种情况下,您不是像您声称的那样重定向,而是转发。看看我的其他回复。
猜你喜欢
  • 2017-11-05
  • 1970-01-01
  • 2016-12-27
  • 2020-02-12
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 2014-10-26
相关资源
最近更新 更多