Apache-2.4

Apache SSL vhost 不會使用 DocumentRoot,而是使用伺服器 webroot

  • February 4, 2020

我有一個使用 DV 萬用字元證書的 apache 配置。ssl.conf 配置為將證書用於所有伺服器流量。

我的 vhost conf 文件在那裡定義了兩個虛擬主機。一個生產虛擬主機和一個開發虛擬主機。conf文件內容是;

<VirtualHost *:443>
 ServerName www.example.com
 ServerAlias example.com
 ServerAdmin webmaster@example.com
 DocumentRoot /var/www/html/vhosts/prod_example_com/

 <Directory "/var/www/html/vhosts/prod_example_com">
   Options Indexes FollowSymLinks
   AllowOverride All
   Require all granted
 </Directory>

 ErrorLog "/var/log/httpd/www.example.com-error_log"
 CustomLog "/var/log/httpd/www.example.com-access_log" common

 #   Enable/Disable SSL for this virtual host.
 SSLEngine on
 SSLCertificateFile /etc/pki/tls/certs/comodo/STAR_example_com.crt
 SSLCertificateKeyFile /etc/pki/tls/certs/csr/www_example_com.key
 SSLCertificateChainFile /etc/pki/tls/certs/comodo/SectigoRSADomainValidationSecureServerCA.crt
</VirtualHost>


<VirtualHost *:443>
 ServerName dev.example.com
 ServerAdmin webmaster@example.com
 DocumentRoot "/var/www/html/vhosts/dev_example_com"

 <Directory "/var/www/html/vhosts/dev_example_com">
   AllowOverride All
   Require all granted
 </Directory>

 ErrorLog "/var/log/httpd/dev.example.com-error_log"
 CustomLog "/var/log/httpd/dev.example.com-access_log" common

 #   Enable/Disable SSL for this virtual host.
 SSLEngine on
 SSLCertificateFile /etc/pki/tls/certs/comodo/STAR_example_com.crt
 SSLCertificateKeyFile /etc/pki/tls/certs/csr/www_example_com.key
 SSLCertificateChainFile /etc/pki/tls/certs/comodo/SectigoRSADomainValidationSecureServerCA.crt
</VirtualHost>

因此,當我訪問https://dev.example.com>時,效果很好。但是,當我嘗試訪問<https://www.example.com時,它會轉到 /var/www/html 的 Apache 伺服器 webroot。

我忽略了什麼嗎?

提前感謝提供的任何幫助?

我似乎找到了問題所在。在我的特定實例中,vhost.conf VirtualHost 標籤都更改為 *:443,但讓一切回到正軌的是從我的 httpd.conf 中註釋掉 ServerName www.example.com:443 並重新啟動 Apache。我希望這可以幫助其他可能遇到同樣問題的人。

重新啟動 apache 應該會給你提示ssl_error_log,你的第一個配置文件建議你忘記了結束標籤&lt;/VirtualHost&gt;,儘管在這種情況下 apache 甚至不應該啟動(語法錯誤)。

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