Apache-2.2

SSL VirtualHost 不使用 DocumentRoot

  • January 30, 2015

我正在嘗試在我自己的 VPS 和 Cloudflare (在Full SSL旁邊)之間設置一個自簽名 SSL 證書。我為此使用以下虛擬主機:

<VirtualHost *:80>
       ServerName domain.com
       Redirect permanent / https://www.domain.com/
</VirtualHost>

<VirtualHost *:443>
       ServerName www.domain.com
       DocumentRoot /var/www/public/www

       SSLEngine on
       SSLCertificateFile /etc/apache2/ssl/apache.crt
       SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>

但是,每當我嘗試訪問 domain.com 時,它都會返回 a403 Forbidden並且我的 apache2 日誌中出現以下錯誤:

[Fri Jan 30 00:19:23 2015] [error] [client (ip)] Directory index forbidden by Options directive: /var/www/public/

這意味著它會嘗試訪問以下設置的預設 DocumentRoot apache2.conf

ServerAdmin server@domain.com
DocumentRoot /var/www/public

請注意,當我將第二個 VirtualHost 的埠更改為 80 並註釋有關 SSL 的 3 行時,它確實有效。

所以我的問題是:為什麼不使用我在 VirtualHost ( *:433) 中指定的 DocumentRoot?

編輯

當我暫停 Cloudflare 並轉到https://www.domain.com時,我可以訪問它(當然會有警告,因為證書是自簽名的)。那麼也許它與 Cloudflare 有關?

我的猜測是您必須為 SSL 埠啟用 NameVirtualHost。

可以通過編輯文件 /etc/apache2/ports.conf 來完成。

在那裡您可以看到埠 80 的配置:

NameVirtualHost *:80

Listen 80

您還可以查看 IFmodule mod_ssl.c 標籤。

預設情況下,標籤內應該只有“Listen 443”,您只需在“Listen 443”行上方添加“NameVirtualHost *:443”。我相信這應該可以解決您的問題。

顯然我沒有發布圖片的聲譽,所以你去:http: //i.imgur.com/vGCEAGb.png

編輯:不要忘記重新啟動 Apache。

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