Apache SSL vhost 不会使用 DocumentRoot,而是使用服务器 webroot

Apache SSL vhost 不会使用 DocumentRoot,而是使用服务器 webroot

我有一个使用 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 的语法已经改变,因此如果您要更新服务器版本,请确保更新您的权限!

看:https://www.budgetvm.com/kb/client-denied-by-server-configuration/#:~:text=To%20fix%20%E2%80%9Cclient%20denied%20by,replaced%20by%20%E2%80%9CRequire%20all%20granted%E2%80%9D

相关内容