Przypisywanie wielu adresów IP do localhost OS X 10.6


9

Próbuję hostować lokalnie wiele witryn z włączoną HTTPS, ale w tym celu musiałbym skonfigurować mój komputer lokalny tak, aby używał wielu adresów IP dla hosta lokalnego (tak mi się wydaje). Czy istnieje sposób, aby wiele adresów IP było rozpoznawanych lokalnie w tym samym czasie?

Używam OS X 10.6 (edycja standardowa - nie serwer) i konfiguracji serwera MAMP.

Dzięki!

Odpowiedzi:


3

Nie potrzebujesz wielu adresów IP, aby hostować wiele witryn na jednym serwerze. Musisz użyć „Virtual Hosts” (z https, jeśli potrzebujesz również). Tutaj jest przewodnik dla wirtualnych hostów na MAMP http://sawmac.com/mamp/virtual/


Aby hostować wiele witryn z włączoną HTTPS, uważam, że każda z nich potrzebuje osobnego adresu IP. Zobacz: stackoverflow.com/questions/11217538/…
user1086746

@ user1086746 Apache obsługuje wskazanie nazwy serwera TLS, podobnie jak wszystkie przeglądarki głównych klientów na ... prawie każdym systemie operacyjnym, który nie jest Windows XP. Odpowiedź, którą powinieneś otrzymać na powiązane pytanie, to ustawić NameVirtualHost *:443.
Shane Madden

@Shane, który nadal nie działa w przypadku wielu witryn korzystających z HTTPS na tym samym adresie IP. Opublikowałem to, co dla mnie zadziałało.
user1086746

@ user1086746 Z pewnością działa; Zgaduję, NameVirtualHostże nie pasowałeś do swoich <VirtualHost>bloków, jeśli wiązałeś konkretnie z 127.0.0.1. Nie ważne w tym przypadku, ponieważ znalazłeś działające rozwiązanie, ale NoNoNo ma rację - nie potrzebujesz dodatkowych adresów IP.
Shane Madden

Chciałbym, aby działało to „poprawnie”, ponieważ konfiguracja tych adresów IP to dodatkowy krok. Mam 2 NameVirtualHosts jak: NameVirtualHost *:80 NameVirtualHost *:443 i próbowałem użyć vhostów takich jak: <VirtualHost _default_:443>i <VirtualHost 127.0.0.1:443>, ale żadne nie zapewni połączenia HTTPS po pierwszym vhostu z listy. Mogę dostarczyć pełne pliki ssl.conf i vhost.conf, jeśli jesteś zainteresowany!
user1086746

22

Aby uzyskać alias localhost, możesz użyć tego polecenia terminala, aby utworzyć „sprzężenie zwrotne”:

ifconfig lo0 alias 127.0.0.2

Dzięki konfiguracji aliasu localhost możesz w ten sposób utworzyć wiele wirtualnych hostów HTTPS:

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

Możesz również zainicjować te hosty podczas uruchamiania, jeśli to pożądane, za pomocą crona root:

sudo crontab -e
@reboot ifconfig lo0 alias 127.0.0.2

Mam nadzieję, że pomoże to każdemu, kto napotkał te same problemy, co ja!


Używanie echo PASSWORDto straszny pomysł. Prymitywną alternatywą byłoby włożenie czegoś do crona root'a jak sudo crontab -ei @reboot ifconfig lo0 alias 127.0.0.2. Istnieje z pewnością bardziej eleganckie rozwiązanie, ale wszystko, co wymaga hasła w postaci zwykłego tekstu, jest niedopuszczalne.
chmac

1
Wow, to świetna zabawa! Używam tego do przekierowania portów ssh . Umożliwia to wielokrotne przekierowanie tego samego portu przez nasłuchiwanie na różnych lokalnych adresach IP. Np ssh -L 127.0.0.2:443 foo:443 -L 127.0.0.3:443 beta.foo:443 user@host. W /etc/hostsrazie potrzeby możesz zdefiniować nazwy hostów dla tych lokalnych adresów IP w pliku. Okazuje się, że jest bardzo przydatny do tworzenia stron internetowych i testowania / zdalnego, zwłaszcza jeśli nie możesz używać niestandardowych portów dla swoich aplikacji.
djule5

2

Nigdy nie musisz dodawać dodatkowych adresów IP do lokalnego hosta w systemie Linux lub Windows. Będą domyślnie odpowiadać, bez dodatkowej konfiguracji, na wszystkie adresy IP od 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

Po prostu spraw, aby Twoja aplikacja nasłuchiwała na dowolnym adresie IP z zakresu 127.0.0.0/8, a będziesz gotowy.

Przykład:

Jedna konsola:

$ nc -vvl 127.0.34.2 9022
Connection from 127.0.0.1 port 9022 [tcp/*] accepted
Hello

Kolejna konsola:

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

Jak zauważył komentator, konieczne jest jawne dodanie adresów IP do interfejsu localhost na MacOS / Darwin.


Wydaje mi się, że nie mogę słuchać bez aliasu w interfejsie sprzężenia zwrotnego. Próbuję nc -vvl 127.0.34.2 9022wrócić nc: Can't assign requested address. Po zdefiniowaniu aliasu ifconfig lo0 alias 127.0.34.2działa. Wszelkie pomysły, dlaczego tak jest? Działa na OSX Yosemite.
djule5,

1
W systemie Mac tylko 127.0.0.1 jest mapowane na urządzenie lo0 (loopback). Aby ręcznie działać, musisz ręcznie dodać alias do urządzenia pętli zwrotnej. Ale w Linuksie wszystkie 127.0.0. * Jest mapowane na urządzenie pętli zwrotnej.
Sriram,

1
W systemie Mac: sudo ifconfig lo0 alias 127.0.0.2 w górę (i tak dalej, należy to zrobić osobno dla każdego adresu)
lilalinux
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.