Назначение нескольких IP-адресов на локальный хост OS X 10.6


9

Я пытаюсь разместить несколько веб-сайтов локально с включенным HTTPS, но для этого мне нужно настроить локальный компьютер на использование нескольких IP-адресов для localhost (я полагаю). Есть ли способ, чтобы несколько IP-адресов разрешались локально одновременно?

Я использую OS X 10.6 (стандартная редакция - не сервер) и настройку сервера MAMP.

Спасибо!

Ответы:


3

Вам не нужно несколько IP для размещения нескольких веб-сайтов на одном веб-сервере. Вам нужно использовать «Виртуальные хосты» (с https, если вам это нужно). Здесь есть руководство для виртуальных хостов на MAMP http://sawmac.com/mamp/virtual/


Я считаю, что для размещения нескольких сайтов с поддержкой HTTPS каждому из них требуется отдельный IP-адрес. См .: stackoverflow.com/questions/11217538/…
user1086746

@ user1086746 Apache поддерживает индикацию имени сервера TLS, как и все основные клиентские браузеры на ... практически во всех ОС, отличных от Windows XP. Ответ, который вы должны были получить на свой связанный вопрос - это задать NameVirtualHost *:443.
Шейн Мэдден

@Shane, который все еще не работает при работе с несколькими сайтами, использующими HTTPS по одному и тому же IP-адресу. Я опубликовал то, что в конечном итоге работает на меня.
user1086746

@ user1086746 Это наверняка работает; Я предполагаю, что вы NameVirtualHostне соответствовали вашим <VirtualHost>блокам, если вы привязывались именно к 127.0.0.1. Неважно в этом случае, так как вы нашли работающее решение, но NoNoNo прав - вам не нужны дополнительные IP-адреса.
Шейн Мэдден

Что ж, я бы хотел, чтобы это работало «правильно», так как настройка этих IP-адресов является дополнительным шагом. У меня есть 2 NameVirtualHosts как: NameVirtualHost *:80 NameVirtualHost *:443 и я пытался использовать vhosts как: <VirtualHost _default_:443>и <VirtualHost 127.0.0.1:443>, но ни один из них не обеспечит HTTPS-соединение после первого перечисленного vhost. Я мог бы предоставить полные файлы ssl.conf и vhost.conf, если вам было интересно!
user1086746

22

Для псевдонима localhost вы можете использовать эту команду терминала для создания «обратной петли»:

ifconfig lo0 alias 127.0.0.2

С помощью настройки псевдонима localhost вы можете создать несколько виртуальных хостов HTTPS следующим образом:

<VirtualHost 127.0.0.1:443> ...... </VirtualHost>
<VirtualHost 127.0.0.2:443> ...... </VirtualHost>

Вы также можете инициализировать эти хосты при запуске, если хотите, через cron root:

sudo crontab -e
@reboot ifconfig lo0 alias 127.0.0.2

Надеюсь, это поможет всем, кто столкнется с теми же проблемами, что и я!


Использование echo PASSWORDэто ужасная идея. Сырой альтернативой было бы поместить что-то в cron root как sudo crontab -eи @reboot ifconfig lo0 alias 127.0.0.2. Конечно, есть более элегантное решение, но все, что включает ваш пароль в виде простого текста, недопустимо.
chmac

1
Вау, это очень весело! Я использую это для переадресации порта ssh . Это позволяет переадресовывать один и тот же порт несколько раз, прослушивая разные локальные IP-адреса. Например ssh -L 127.0.0.2:443 foo:443 -L 127.0.0.3:443 beta.foo:443 user@host. Затем вы можете определить имена хостов для этих локальных IP-адресов в вашем /etc/hostsфайле, если это необходимо. Оказывается, это очень полезно для веб-разработки и тестирования / удаленного взаимодействия, особенно если вы не можете использовать пользовательские порты для своих приложений.
djule5

2

Вам никогда не нужно добавлять дополнительные IP-адреса на локальный хост в Linux или Windows. По умолчанию они будут отвечать без дополнительной настройки на все IP-адреса с 127.0.0.0/8:

$ 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

Так что просто заставьте ваше приложение прослушивать любой IP из диапазона 127.0.0.0/8, и все будет хорошо.

Пример:

Одна консоль:

$ 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!

Как отметил комментатор, то есть необходимо , чтобы добавить IP - адреса к интерфейсу LOCALHOST явно на MacOS / Darwin.


Кажется, я не могу слушать без псевдонима в петлевом интерфейсе. Пытаясь 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 (loopback). Вам нужно вручную добавить псевдоним к устройству обратной связи, чтобы оно работало. Но в Linux все 127.0.0. * Отображаются на петлевые устройства.
Шрирам

1
Для Mac: sudo ifconfig lo0 с псевдонимом 127.0.0.2 up (и т. Д. Должен выполняться индивидуально для каждого адреса)
lilalinux
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.