我已经跑了一段时间的墙壁,所以我张贴在stackoverflow,我被指出在这里…
我正在尝试在Snow Leopard上设置多个IP地址,以便我可以使用SSL证书进行开发。 我正在运行XAMPP – 我不知道是否是这个问题,但我想我会遇到同样的问题,考虑到内置的Apache被closures。
所以首先,我开始研究启动IP。 我启动了一个运行正确的新的StartupItem,因为我可以ping通ip地址:
ping 127.0.0.2 ping 127.0.0.1
而且他们都工作。 所以现在我有IP地址,你可能知道在OSx上不是标准的。
我编辑了/etc/hosts文件以包含新的网站:
127.0.0.1 site1.local 127.0.0.2 site2.local
我已经改变了httpd.conf使用httpd-vhosts.conf – 因为我有一个IP地址上运行几个站点。
我已经编辑了vhosts文件,所以一个网站看起来像这样:
<VirtualHost 127.0.0.1:80> DocumentRoot "/Users/jim/Documents/Projects/site1/web" ServerName site1.local <Directory "/Users/jim/Documents/Projects/site1"> Order deny,allow Deny from All Allow from 127.0.0.1 AllowOverride All </Directory> </VirtualHost> <VirtualHost 127.0.0.1:443> DocumentRoot "/Users/jim/Documents/Projects/site1/web" ServerName site1.local SSLEngine On SSLCertificateFile "/Applications/XAMPP/etc/ssl-certs/myssl.crt" SSLCertificateKeyFile "/Applications/XAMPP/etc/ssl-certs/myssl.key" SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown <Directory "/Users/jim/Documents/Projects/site1"> Order deny,allow Deny from All Allow from 127.0.0.1 AllowOverride All </Directory> </VirtualHost>
在上面的代码中,您可以将1更改为2,这是第二个站点的设置。 他们使用相同的证书,这就是为什么他们在不同的IP地址。
我还在文件顶部包含了NameVirtualHost信息:
NameVirtualHost 127.0.0.1:80 NameVirtualHost 127.0.0.2:80 NameVirtualHost 127.0.0.1:443 NameVirtualHost 127.0.0.2:443
我可以ping site1.local和site2.local。 我可以使用telnet( telnet site2.local 80 )进入这两个站点。 但在Safari浏览器,我只能到达第一个site1.local – 导航到site2.local给我的localhost主页(这是包括在虚拟主机),或给我一个Access禁止!
我很喜欢做什么,任何build议将是真棒。
怎么听指令? 你应该Listen 127.0.0.1:443和Listen 127.0.0.2:443而不是只有Listen *:443 。
需要做的一件事情是:只要包含此指令,就可以让多个虚拟主机在相同的IP地址上使用相同的证书:
NameVirtualHost 127.0.0.1:443
有关示例configuration文件,请参见http://wiki.apache.org/httpd/NameBasedSSLVHosts 。
我有相同的设置工作,除了我的NameVirtualHost,而不是:
NameVirtualHost 127.0.0.1:80 NameVirtualHost 127.0.0.2:80 NameVirtualHost 127.0.0.1:443 NameVirtualHost 127.0.0.2:443
我只有:
NameVirtualHost *:80
而我的ServerName在HTTPS虚拟主机包括端口:443,例如
<VirtualHost 127.0.0.1:443> DocumentRoot "/Users/jim/Documents/Projects/site1/web" ServerName site1.local:443 .........
希望这可以帮助!