我不太了解Apacheconfiguration中的if语句,而且我想知道是否只有在某个端口上收到请求时才能应用configuration的一部分。
总之,这是关于SSL。 我有基于名称的虚拟主机,我可以对端口80进行configuration,然后将其全部复制到端口443,并添加相关的SSLconfiguration。
但是这似乎是多余的。 我想知道如果我能有这样的东西:
<VirtualHost *:80 *:443>
然后我可以把:
<IfModule mod_ssl.c> SSLEngine on SSLCertificateFile ... SSLCertificateKeyFile ... SSLCACertificateFile ... </IfModule>
在一个if语句中检查连接是否在端口443上,或者是不可能的? 服务器支持SNI,我不担心不符合SNI的浏览器。
是的,从Apache 2.4开始,你可以使用
<If "%{HTTPS} == 'on'"> # HTTPS-specific configuration here </If>
在你的configuration文件中。
还支持<If "expression">括号内的许多其他expression式,例如实际检查特定的端口。 欲了解更多信息,请参阅Apache文档 。
但是请记住,某些指令在<If>子句中不起作用。 检查指令的允许上下文,其中<If>视为directory上下文(如<Directory> )。