如何让 apache2 在端口 443 和非标准端口上提供 HTTPS 服务?

如何让 apache2 在端口 443 和非标准端口上提供 HTTPS 服务?

你好,我想更改 apache2 中的端口。我在标准端口 http=80 https=443 上运行 owncloud。出于某些原因,我需要将 https 端口从 443 更改为 8443。我见过很多解决方案,但都无法得到我想要的百分百结果。我只希望当我写主机名“服务器”时,我只会看到我的 owncloud 页面。当我写我的 ipadress 时,我不需要提到端口号,但当我写“服务器”时,我需要提到端口号 8443,这样它就可以正常工作了。我正在使用 Ubuntu 16.04 LTS。我已经尝试了虚拟主机上的所有方法,也尝试了 ports.conf。如果有人知道,请告诉我一些解决方案。提前谢谢

答案1

浏览器知道默认端口(80、443)。http://也是默认端口。因此,当你写

server

你的浏览器实际上发出了请求

http://server:80/

如果你输入

https://server/

您的浏览器将发出请求

https://server:443/

事实上,情况要复杂一些,因为你不能直接访问网络名称。浏览器找到服务器的 IP 并发出请求

http://<ip of server>:80/

并告诉服务器该请求是针对的server,因为您还可以在同一个 IP 地址上托管server1、、 ...。server2

您将无法让浏览器默认请求端口 8443。您必须将其写入地址中。

您所描述的问题对我来说并不全都清楚,但看起来它们都与 apache 配置以及浏览器无法默认转到 8443 端口有关。

当您在 apache 中定义 VirtualHost 时,您必须指定ServerName。客户端将到达服务器的 IP,但 apache 需要知道请求了哪个服务器名称才能返回正确的页面。如果您仅使用 IP 访问服务器,则名称将不会发送给 apache,它将返回默认页面。我怀疑您的情况就是这样,因为您说浏览 IP 有效。我怀疑它对默认端口号有效。

我希望我能至少帮助解答一些疑问。

相关内容