我正在使用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>
现在我还想处理Https请求,因为我在vhosts文件中添加了以下代码
<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内部服务器错误错误。
我在Wildfly服务器上设置了SSL。我是否还需要为Apache购买单独的SSL,还是可以在Apache上使用相同的SSL?如果是,那么请解释一下我该怎么做?
答案 0 :(得分:2)
重定向Apache for Wildfly上的Https请求
如果您使用评论中的其他信息来增加问题中的信息,则可以看到您实际上没有重定向客户端,就像您在问题中的各个位置所声称的那样。如果是重定向,服务器将告诉客户端询问其他服务器。你在这里做的是转发你的Apache作为反向代理工作,并将请求从客户端转发到Wildfly服务器,并将Wildfly的响应发送回客户端。
由于在这种情况下客户端只是直接与Apache服务器交互,因此如果客户端使用HTTPS,则此Apache服务器将执行TLS握手。 这意味着Apache必须配置相应的证书并启用SSL。然后,Apache将终止客户端的原始HTTPS连接。由于您已将ProxyPass配置为HTTPS URL,因此Apache将与代理的Wildfly服务器建立另一个HTTPS连接。而且,从客户端的角度来看,Wildfly服务器是否支持HTTPS并不重要 - 所有重要的是如何访问Apache服务器。
答案 1 :(得分:1)
要从https://siteA
重定向到https://siteB
,您需要先获得siteA的证书(当然还有siteB),然后正确配置它。在您的情况下,您既没有配置证书也没有在端口443配置https。相反,您刚刚将端口443配置为另一个HTTP(但不是HTTPS)服务器,当然尝试使用HTTPS访问它时会出错。