如何使用Apache运行多个支持SSL的网站进行本地开发
我有几个我正在开发的网站,通过虚拟服务器和不同的文档根,将它们配置为基于端口访问。也就是说,对于一个站点,如何使用Apache运行多个支持SSL的网站进行本地开发,apache,ssl,https,localhost,multiple-sites,Apache,Ssl,Https,Localhost,Multiple Sites,我有几个我正在开发的网站,通过虚拟服务器和不同的文档根,将它们配置为基于端口访问。也就是说,对于一个站点,localhost:8010,对于另一个站点,localhost:8020 在我有多个站点之前,SSL工作得很好,只有一个使用端口80和443。但是,现在未屏蔽的站点可以正常加载,但对于任何一个站点,都无法建立SSL连接。它似乎也没有改变端口——当我点击以https://开头的链接时,它试图转到https://localhost:8010/secure/route 我对像https://lo
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
<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>
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>
以及:
<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>
选项索引如下SYMLINKS包括ExecCGI
允许超越所有
要求所有授权
选项索引如下SYMLINKS包括ExecCGI
允许超越所有
要求所有授权
在我的httpd vhosts.conf中,我有:
Listen 8010
Listen 8020
<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>
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>
服务器管理员zugwalt@projectone.com
DocumentRoot“/path/to/project/one”
服务器名本地主机:8010
ErrorLog“logs/projectone error.log”
CustomLog“logs/projectone access.log”通用
服务器管理员zugwalt@projecttwo.com
DocumentRoot“/path/to/project/two”
ServerName本地主机:8020
ErrorLog“logs/projecttwo error.log”
CustomLog“logs/projecttwo access.log”通用
在我的httpd ssl.conf中,我有:
Listen 8010
Listen 8020
<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>
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>
听443
DocumentRoot“/path/to/project/one”
服务器名本地主机:8010
斯伦金安
SSLCertificateFile/path/to/ssl/server.crt
SSLCertificateKeyFile/path/to/ssl/server.key
DocumentRoot“/path/to/project/two”
ServerName本地主机:8020
斯伦金安
SSLCertificateFile/path/to/ssl/server.crt
SSLCertificateKeyFile/path/to/ssl/server.key
我在Windows 7上使用Apache 2.4,您将两个虚拟主机都定义在端口443上,但您没有每个虚拟主机的实际dns主机名! 您将servername设置为localhost:8010和8020-这将不起作用,因为端口不是dns名称的一部分 您必须具有不同的服务器名,如ssl1.example.com和ssl2.example.com-另一方面,您可以为ssl定义不同的端口,就像为纯http定义端口一样:
<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>
DocumentRoot“/path/to/project/one”
服务器名本地主机
斯伦金安
SSLCertificateFile/path/to/ssl/server.crt
SSLCertificateKeyFile/path/to/ssl/server.key
DocumentRoot“/path/to/project/two”
服务器名本地主机
斯伦金安
SSLCertificateFile/path/to/ssl/server.crt
SSLCertificateKeyFile/path/to/ssl/server.key
然后使用浏览器中的端口: