Answers:
您不需要多个IP即可在一台Web服务器上托管多个网站。您需要使用“虚拟主机”(如果需要,还可以使用https)。这里是MAMP上虚拟主机的指南,网址为http://sawmac.com/mamp/virtual/
NameVirtualHost *:443
。
NameVirtualHost
与您的<VirtualHost>
区块不匹配。在这种情况下,无论如何,因为您已经找到了可行的解决方案,但是NoNoNo是正确的-您不需要额外的IP。
NameVirtualHost *:80 NameVirtualHost *:443
并且尝试使用vhosts like:<VirtualHost _default_:443>
和<VirtualHost 127.0.0.1:443>
,但是在第一个列出的vhost之后都无法提供HTTPS连接。如果您有兴趣,我可以提供完整的ssl.conf和vhost.conf文件!
要给本地主机起别名,您可以使用以下终端命令创建“回送”:
ifconfig lo0 alias 127.0.0.2
使用localhost别名设置,您可以由此创建多个HTTPS虚拟主机:
<VirtualHost 127.0.0.1:443> ...... </VirtualHost>
<VirtualHost 127.0.0.2:443> ...... </VirtualHost>
如果需要,您还可以在启动时通过root的cron初始化这些主机:
sudo crontab -e
@reboot ifconfig lo0 alias 127.0.0.2
希望这可以帮助遇到我同样问题的任何人!
echo PASSWORD
是一个可怕的想法。粗略的选择是将某些东西放在root的cron中,例如sudo crontab -e
和@reboot ifconfig lo0 alias 127.0.0.2
。当然,有一个更优雅的解决方案,但是任何以纯文本形式涉及密码的操作都是不可接受的。
ssh -L 127.0.0.2:443 foo:443 -L 127.0.0.3:443 beta.foo:443 user@host
。然后,可以/etc/hosts
根据需要在文件中为这些本地IP地址定义主机名。事实证明,这对于Web开发和测试/远程处理非常有用,尤其是在您无法为应用程序使用自定义端口的情况下。
您无需在Linux或Windows上将其他IP地址添加到本地主机。默认情况下,它们将对127.0.0.0/8中的所有IP地址进行响应,而无需进行其他配置:
$ ping 127.254.0.100
PING 127.254.0.100 (127.254.0.100) 56(84) bytes of data.
64 bytes from 127.254.0.100: icmp_seq=1 ttl=64 time=0.026 ms
因此,只要让您的应用程序侦听127.0.0.0/8范围内的任何IP,就可以了。
例:
一个控制台:
$ nc -vvl 127.0.34.2 9022
Connection from 127.0.0.1 port 9022 [tcp/*] accepted
Hello
另一个控制台:
$ echo Hello | nc -vv 127.0.34.1 9022
nc: connect to 127.0.34.1 port 9022 (tcp) failed: Connection refused
$ echo Hello | nc -vv 127.0.34.2 9022
Connection to 127.0.34.2 9022 port [tcp/*] succeeded!
正如评论者所指出的,有必要在MacOS / Darwin上显式地将IP添加到localhost接口。
nc -vvl 127.0.34.2 9022
回报nc: Can't assign requested address
。使用定义的别名ifconfig lo0 alias 127.0.34.2
,它可以正常工作。有什么想法吗?在OSX Yosemite上运行。