我试图运行一个Web服务器,在一个服务器名称,在2个端口。 80和443.网站的某些区域如果不在端口443上使用ssl,则应该被禁止。
Web服务器上的当前实现使用虚拟服务器来区分黑白443和80.我想知道虚拟服务器在这种环境下是否有意义,我找不到任何人在讨论只有一个服务器名称的虚拟服务器。
这在基于IP的虚拟服务器下是否有意义? 由于它只有一个IP地址。
感谢您对此发表看法,Nachum
对于http和https,使用不同的VirtualHost(我相信这是你描述当前设置的意思)是相当普遍的。
为了执行https,你可以使用mod_rewrite:
RewriteEngine On RewriteRule ^(.*) https://yourserver.com$1 [R,L]
这当然可以修改为只适用于一些url:
RewriteEngine On RewriteRule ^/secure-area(.*) https://yourserver.com/secure-area$1 [R,L]
这些应放置在:80 VirtualHost(http)以防止redirect循环。
或者,也可以使用RewriteCond条件将规则限制为非httpsstream量:
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/secure-area(.*) https://yourserver.com/secure-area$1 [R,L]
您仍然需要为不同的端口定义两个不同的<VirtualHost>块,因为SSL指令需要存在于端口443,而不存在于端口80。
听起来好像你在80和443configuration之间还有一些额外的差异,但是你可以说明你在两个不同的<VirtualHost>块中为你的两个不同的监听端口configuration了什么吗?