![Http 打开的 apache 站点与 https 打开的站点不同](https://linux22.com/image/691499/Http%20%E6%89%93%E5%BC%80%E7%9A%84%20apache%20%E7%AB%99%E7%82%B9%E4%B8%8E%20https%20%E6%89%93%E5%BC%80%E7%9A%84%E7%AB%99%E7%82%B9%E4%B8%8D%E5%90%8C.png)
我已经在启用的站点中设置了 http 重定向到 https,cloud.conf
所以最近我000-default
使用sudo a2ensite 000-default
现在启用了站点,这启用了我的000-default
站点并且它打开了预期的文档根目录,没有 http 到 https 重定向,因为我在 000-default 中没有任何重定向。
但是当我重新启用站点云时,sudo a2ensite cloud
它确实启用了我的 https 站点,从而打开了预期的站点云,但如果我打开 http 站点,它既不会自动重定向到 https,也不会以 http 模式打开 000-default 网站。
首先,当我启用网站云为什么它仍以 http 模式打开旧网站并且不重定向?
更新
$ apachectl -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:80 is a NameVirtualHost
default server 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost 192.168.1.3 (/etc/apache2/sites-enabled/cloud.conf:1)
*:443 is a NameVirtualHost
default server 192.168.1.3 (/etc/apache2/sites-enabled/cloud.conf:10)
port 443 namevhost 192.168.1.3 (/etc/apache2/sites-enabled/cloud.conf:10)
port 443 namevhost 192.168.1.3 (/etc/apache2/sites-enabled/cloud.conf:30)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33 not_used
Group: name="www-data" id=33 not_used
现在我想知道如何在端口 80 上启用 2 个站点
答案1
所以,这就是你的问题。你定义了两个 http vhost,一个使用ServerName
127.0.0.1,另一个使用192.168.1.3
。这意味着任何地址栏中未使用 192.168.1.3 的 HTTP 请求将登陆第一个虚拟主机(名称为 127.0.0.1)。
请注意,这看起来应该只是 localhost,这无关紧要,这只是它的名称。它是一个*:80
虚拟主机,因此可以在机器上的任何网络接口上使用。
您在/etc/apache2/sites-enabled/cloud.conf
两个服务器上都拥有两个 HTTPS 虚拟主机,其 IP 地址相同ServerName
(192.168.1.30)。只有第一个(默认)会接收请求。
基于名称的虚拟主机的工作方式是,对于任何 IP/端口组合,Apache 都会尝试将Host
HTTP 标头与ServerName
或ServerAlias
指令进行匹配。第一个匹配的虚拟主机将接收请求。如果不找到匹配项,则列出的第一个接收请求。
HTTPHost
标头默认为方案(通常是 http:// 或 https://)和 URI 路径(从下一个“/”开始的位)之间的 URL 部分。