Призначення декількох IP-адрес для localhost 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-адресою. Я зробив повідомлення про те, що закінчилося для мене.
користувач1086746

@ 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, якщо вам було цікаво!
користувач1086746

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 вище (і так далі, потрібно робити індивідуально для кожної адреси)
lilalinux
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.