Apache-2.2
SSL VirtualHost 不使用 DocumentRoot
我正在嘗試在我自己的 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 時,它都會返回 a
403 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。