Web-Server

Http 打開與 https 不同的 apache 站點

  • October 11, 2016

我已經在啟用的站點中設置了 http 重定向到 https,cloud.conf所以最近我啟用了站點000-default,使用sudo a2ensite 000-defaultnow 這啟用了我的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 個站點

所以,有你的問題。您有兩個 http 虛擬主機,一個定義為ServerName127.0.0.1,一個定義為192.168.1.3. 這意味著任何不在地址欄中使用 192.168.1.3 的 HTTP 請求都將到達第一個虛擬主機(名稱為 127.0.0.1)。

請注意,這看起來應該只是 localhost 並不重要,這只是它的名稱。它是一個*:80虛擬主機,因此可以在機器上的任何網路介面上使用。

您有兩個/etc/apache2/sites-enabled/cloud.conf具有相同ServerName(192.168.1.30) 的 HTTPS 虛擬主機。只有第一個(預設值)會接收請求。

基於命名的虛擬主機的工作方式是,對於任何 ip/port 組合,Apache 都會嘗試將HostHTTP 標頭與ServerNameorServerAlias指令匹配。第一個匹配的虛擬主機接收到請求。如果找到匹配項,則列出的第一個接收請求。

HTTP標Host頭預設為方案(通常是 http:// 或 https://)和 URI 路徑(從下一個“/”開始的位)之間的 URL 部分。

引用自:https://serverfault.com/questions/808201