我在这方面遇到了一些困难,因此我在 stackoverflow 上发布了帖子,然后有人指向了我这里...
我正在尝试在 Snow Leopard 上设置多个 IP 地址,以便使用 SSL 证书进行开发。我正在运行 XAMPP - 我不知道这是否是问题所在,但考虑到内置的 apache 已关闭,我想我会遇到同样的问题。
因此,我首先研究了在启动时启动 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 主页(包含在 vhosts 中)或给我一个访问被禁止!。
我不知道该怎么做,任何建议都很好。
答案1
那么 listen 指令呢?你应该有Listen 127.0.0.1:443
and ,Listen 127.0.0.2:443
而不是 only Listen *:443
。
答案2
可以尝试一件事:只要包含此指令,您就可以让多个虚拟主机在同一个 IP 地址上使用同一个证书:
名称虚拟主机 127.0.0.1:443
答案3
除了我的 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
并且我的 HTTPS 虚拟主机中的服务器名称包含端口:443,例如
<VirtualHost 127.0.0.1:443>
DocumentRoot "/Users/jim/Documents/Projects/site1/web"
ServerName site1.local:443
.........
希望这可以帮助!