我正在使用 Apache 作为我的 Web 应用程序的代理服务器,该应用程序在 Glassfish 容器中运行。我在 Apache 中配置了代理通行证和 SSL。可以使用以下 URL 从外部访问该网站 https://www.my-domain.com没有任何问题。但我想在浏览器上调用没有前缀“https://”(www.mydomain.com.)的网站。
如果我使用不带 https:// 的 URL,它会在浏览器(Safari、Firefox)上出现“无法连接到服务器”的错误,并且在命令提示符下使用 curl 它会显示:
Rebuilt URL to: www.my-domain.com/
Trying 2xx.xxx.xxx.xxx...
connect to 2xx.xxx.xxx.xxx port 80 failed: Connection refused
我根据 apache 文档配置了虚拟主机来重定向任何请求没有“https” 改为 “https”。这是我的配置:
<VirtualHost 2xx.xxx.xxx.xxx:80>
ServerName my-domain.com
ServerAlias www.my-domain.com
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://my-domain.com [R,L]
</VirtualHost>
我在配置中遗漏了什么吗?为什么 Apache 服务器不重定向请求?任何帮助都将不胜感激。
附言:一旦我从外部使用 https:// 调用页面,即使删除了 cash 也可以调用,无需前缀 https://。在 VPN 或同一网络中,它无需前缀即可工作。
答案1
您需要确保在 Apache 配置中有一个针对端口 80 的有效 Listen 语句。仅添加端口 80 虚拟主机是不够的。