我正在开发一些网站,通过虚拟服务器和不同的文档根,将它们配置为基于端口进行访问。即一个网站localhost:8010
,另一个网站localhost:8020
。
在我拥有多个站点之前,SSL只使用一个端口80和443正常工作。但是现在未经修复的站点加载正常但是对于任何一个站点都无法建立SSL连接。它似乎也没有改变端口 - 当我点击以https://开头的链接时,它会尝试转到https://localhost:8010/secure/route
。
我可以使用https://localhost:8010/secure/route
这样的网址工作,也可以根据网站自动升级到其他端口(例如https://localhost:8011/project/one/secure/route
,https://localhost:8021/project/two/secure/route
),或者只要我可以使用不同的端口和SSL在本地运行两个站点,就可以使用其他东西了!
在我的 httpd.conf 中,我有:
Listen 8010
Listen 8020
以及:
<Directory "/path/to/project/one">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
<Directory "/path/to/project/two">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
在我的 httpd-vhosts.conf 中,我有:
<VirtualHost *:8010>
ServerAdmin zugwalt@projectone.com
DocumentRoot "/path/to/project/one"
ServerName localhost:8010
ErrorLog "logs/projectone-error.log"
CustomLog "logs/projectone-access.log" common
</VirtualHost>
<VirtualHost *:8020>
ServerAdmin zugwalt@projecttwo.com
DocumentRoot "/path/to/project/two"
ServerName localhost:8020
ErrorLog "logs/projecttwo-error.log"
CustomLog "logs/projecttwo-access.log" common
</VirtualHost>
在 httpd-ssl.conf 中,我有:
Listen 443
<VirtualHost *:443>
DocumentRoot "/path/to/project/one"
ServerName localhost:8010
SSLEngine on
SSLCertificateFile /path/to/ssl/server.crt
SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/path/to/project/two"
ServerName localhost:8020
SSLEngine on
SSLCertificateFile /path/to/ssl/server.crt
SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>
我在Windows 7上使用Apache 2.4
答案 0 :(得分:0)
您将两个虚拟主机都定义为位于端口443 <VirtualHost *:443>
上,但是每个主机都没有真实的DNS主机名!
您将服务器名称设置为localhost:8010和8020-这将不起作用,因为端口不是dns名称的一部分!
您必须具有不同的服务器名称,例如ssl1.example.com和ssl2.example.com-另一方面,您可以像为纯http:那样为ssl定义不同的端口。
<VirtualHost *:8110>
DocumentRoot "/path/to/project/one"
ServerName localhost
SSLEngine on
SSLCertificateFile /path/to/ssl/server.crt
SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>
<VirtualHost *:8120>
DocumentRoot "/path/to/project/two"
ServerName localhost
SSLEngine on
SSLCertificateFile /path/to/ssl/server.crt
SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>
然后使用浏览器中的端口: