将多个IP地址分配给localhost OS X 10.6


9

我正在尝试在启用HTTPS的情况下在本地托管多个网站,但是为了做到这一点,我需要将本地计算机配置为对本地主机使用多个IP地址(我相信)。有什么办法可以同时在本地解析多个IP地址?

我正在使用OS X 10.6(标准版-不是服务器)和MAMP服务器设置。

谢谢!

Answers:


3

您不需要多个IP即可在一台Web服务器上托管多个网站。您需要使用“虚拟主机”(如果需要,还可以使用https)。这里是MAMP上虚拟主机的指南,网址为http://sawmac.com/mamp/virtual/


要托管启用了HTTPS的多个站点,我相信它们每个都需要一个单独的IP地址。请参阅:stackoverflow.com/questions/11217538/...
user1086746

@ user1086746 Apache以及所有主要的客户端浏览器都支持TLS服务器名称指示。您应该在链接的问题上得到的答案是set NameVirtualHost *:443
Shane Madden 2012年

在通过同一IP地址使用HTTPS处理多个站点时,@ Shane似乎仍然不起作用。我确实发布了最终为我工作的内容。
user1086746 2012年

@ user1086746它当然可以工作;如果您专门绑定到127.0.0.1,我想您NameVirtualHost与您的<VirtualHost>区块不匹配。在这种情况下,无论如何,因为您已经找到了可行的解决方案,但是NoNoNo是正确的-您不需要额外的IP。
Shane Madden 2012年

好吧,我想让此操作“正确”进行,因为设置这些IP地址是一个额外的步骤。我有2个NameVirtualHosts like:,NameVirtualHost *:80 NameVirtualHost *:443 并且尝试使用vhosts like:<VirtualHost _default_:443><VirtualHost 127.0.0.1:443>,但是在第一个列出的vhost之后都无法提供HTTPS连接。如果您有兴趣,我可以提供完整的ssl.conf和vhost.conf文件!
user1086746 2012年

22

要给本地主机起别名,您可以使用以下终端命令创建“回送”:

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。当然,有一个更优雅的解决方案,但是任何以纯文本形式涉及密码的操作都是不可接受的。
chmac 2014年

1
哇,这很有趣!我将其用于ssh端口转发。这允许通过侦听不同的本地IP地址多次转发同一端口。例如ssh -L 127.0.0.2:443 foo:443 -L 127.0.0.3:443 beta.foo:443 user@host。然后,可以/etc/hosts根据需要在文件中为这些本地IP地址定义主机名。事实证明,这对于Web开发和测试/远程处理非常有用,尤其是在您无法为应用程序使用自定义端口的情况下。
djule5 '16

2

您无需在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上运行。
djule5

1
在Mac中,只有127.0.0.1映射到lo0(回送)设备。您需要手动将别名添加到回送设备以使其起作用。但是在Linux中,所有127.0.0。*都映射到回送设备。
斯里拉姆

1
对于Mac:sudo ifconfig lo0别名127.0.0.2起(以此类推,必须为每个地址单独完成)
lilalinux
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.