我的 Apache2 出现了问题,我可能配置错误,但我不知道是什么问题。
我所有的 https 流量总是重定向到单个页面,我无法添加不同的 https 页面。
这是我的配置:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
allow from all
AddHandler cgi-script .py
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/www1/
ServerName www1.lucas.myurl.be
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/www2/
ServerName www2.lucas.myurl.be
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /usr/share/roundcube/
ServerName webmail.lucas.myurl.be
SSLEngine on
SSLCertificateFile PlaceOFMy1stCert
SSLCertificateKeyFile PlaceOfMy1stKey
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /usr/share/roundcube/
ServerName webmail.lucas.myurl.be
Redirect / https://webmail.lucas.myurl.be/
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www
ServerName secure.lucas.myurl.be
SSLEngine on
SSLCertificateFile My2ndCert
SSLCertificateKeyFile My2ndKey
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www
ServerName secure.lucas.myurl.be
Redirect / https://secure.lucas.myurl.be/
</VirtualHost>
问题是当我重新启动 Apache2 时收到默认覆盖警告,但我不明白它来自哪里。
[warn] _default_ VirtualHost overlap on port 443, the first has precedence
httpd not running, trying to start
因此,当我访问 secure.lucas.myurl.be 时,它会转到https://webmail.lucas.myurl.be,而不是去https://secure.lucas.myurl.be
那么我需要在配置中添加什么才能使其重定向到正确的 SSL 页面而不是将所有内容重定向到第一个 443 重定向?
答案1
很正常的一个问题。每个 IP 只能有一个 SSL 证书。这里所有接口上都有 2 个 SSL 块,因此 apache 只会采用第一个。
您也可能仍启用了默认 SSL vhost 2。
使用以下命令检查哪些虚拟主机已启用:
apache2ctl -S
这将为您提供一个列表。
您可以在 1 个 IP 上拥有多个 SSL 块,但是所有块必须使用相同的证书。
答案2
听起来好像没有启用 SNI。这可以解释为什么它们都转到同一页面。如果您正在运行 Debian Lenny 或 Debian Squeeze,我相信它会起作用。
查看这一页它描述了如何在主机上启用 SNI。请注意,这与基于名称的虚拟主机一起使用。从您的配置来看,您似乎正在使用命名虚拟主机。