我有一个使用 DV 通配符证书的 apache 配置。ssl.conf 配置为对所有服务器流量使用该证书。
我的 vhost conf 文件定义了两个虚拟主机。一个生产 vhost 和一个开发 vhost。conf 文件内容如下:
<VirtualHost *:443>
ServerName www.example.com
ServerAlias example.com
ServerAdmin [email protected]
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 [email protected]
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。
我是否忽略了什么?
提前感谢提供的任何帮助?
答案1
我似乎找到了问题所在。在我的特定实例中,vhost.conf VirtualHost 标签都更改为 *:443,但让一切恢复正常的方法是从 httpd.conf 中注释掉 ServerName www.example.com:443 并重新启动 Apache。我希望这可以帮助其他可能遇到同样问题的人。
答案2
重新启动 apache 应该会给你提示ssl_error_log
,你的第一个配置文件表明你忘记了结束标记</VirtualHost>
,尽管在这种情况下 apache 甚至不应该启动(语法错误)。
答案3
我遇到了类似的问题。查看 VirtualHost 的错误日志,我看到了以下消息:
client denied by server configuration: /usr/local/www/<virtualhost path>
这很奇怪,因为我没有更改任何权限。事实证明 Apache 2.4 的语法已经改变,因此如果您要更新服务器版本,请确保更新您的权限!