在Ubuntu的Apache2在我有我的网站上听80,现在我想添加SSL。 有没有办法启用端口443的SSLEngine,所以我不必复制整个VirtualHost块?
当我这样做:
Listen 80 Listen 443 NameVirtualHost * <VirtualHost *> SSLEngine On ... a bunch more lines... </VirtualHost>
它打开端口80的SSLEngine。有没有办法只使用一个VirtualHost块,只打开端口443的SSLEngine? 所以我可以做这样的事情?
Listen 80 Listen 443 NameVirtualHost * <VirtualHost *> <IfPort 443> SSLEngine On </IfPort> ... a bunch of lines I don't want to copy into another VirutalHost block... </VirtualHost>
您不能让一个虚拟主机同时执行HTTP和HTTPS,因为他们是单独的虚拟主机服务于单独的协议。 相反,您应该将所有常用configuration放在单独的文件中,然后将该文件包含在域的SSL和非SSL虚拟主机中。
最小的例子:
# /etc/apache2/sites-available/example.com <VirtualHost *:80> Include /etc/apache2/domains/example.com </VirtualHost> <VirtualHost 192.0.2.1:443> SSLEngine On SSLCertificateFile /etc/ssl/example.com_crt SSLCertificateKeyFile /etc/ssh/example.com_key Include /etc/apache2/domains/example.com </VirtualHost> # /etc/apache2/domains/example.com ServerName example.com ServerAlias www.example.com ServerAdmin [email protected] DocumentRoot /home/example/public_html ErrorLog /home/example/apache/error.log
您可以将目录设置放在任何<VirtualHost>
块之外的<Directory>
<VirtualHost>
块中。 这将在所有虚拟主机上应用它们,但只在指定path内。