【发布时间】:2021-08-10 22:09:51
【问题描述】:
我正在尝试使用 SSL 设置动态 apache 虚拟主机配置。
假设我有 3 个域 example1.com、example2.com 和 example3.com,它们的项目文件夹位于 /var/www/html/。
例如。
example1.com - /var/www/html/example1/
example2.com - /var/www/html/example2/
example3.com - /var/www/html/example3/
我已将 apache 配置为从域设置 UseCanonicalName 到 Off 形成自引用 URL。引用此文档here。 我的 conf 看起来像这样
UseCanonicalName Off
VirtualDocumentRoot /var/www/html/%1
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
它适用于 HTTP 请求。
问题 #1
我想动态包含 SSL 证书但失败了。我尝试添加
SSLEngine on
SSLCertificateFile /home/abc/certs/%1/domain.crt
SSLCertificateKeyFile /home/abc/certs/%1/domain.key
SSLCertificateChainFile /home/abc/certs/%1/domain.ca-bundle
扔了
SSLCertificateFile: file '/home/abc/certs/%1/domain.crt' does not exist or is empty
我该如何解决这个问题?有没有办法从数据库设置 ssl?
问题 #2\
使用上述vhost配置后,apache无法映射专用服务器名称。
UseCanonicalName Off
VirtualDocumentRoot /var/www/html/%1
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
<VirtualHost *:80>
ServerName dev.example.com
DocumentRoot /var/www/html/devportal
<Directory "/var/www/html/devportal">
Options Indexes FollowSymLinks Multiviews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
上面的 VirtualDocumentRoot 覆盖了其他虚拟主机块。当我尝试将 VirtualDocumentRoot 包含在 VirtualHost 块中时,dev.example.com 可以工作,但其他域指向默认的 apache html。 我无法弄清楚我在这里犯了什么错误。
【问题讨论】: