Zuweisen mehrerer IP-Adressen zu localhost OS X 10.6


9

Ich versuche, mehrere Websites lokal mit aktiviertem HTTPS zu hosten, aber dazu muss ich meinen lokalen Computer so konfigurieren, dass mehrere IP-Adressen für localhost verwendet werden (glaube ich). Gibt es eine Möglichkeit, mehrere IP-Adressen gleichzeitig lokal aufzulösen?

Ich verwende OS X 10.6 (Standard Edition - kein Server) und das MAMP-Server-Setup.

Vielen Dank!

Antworten:


3

Sie benötigen nicht mehrere IP-Adressen, um mehrere Websites auf einem Webserver zu hosten. Sie müssen "Virtual Hosts" verwenden (mit https, wenn Sie es auch benötigen). Hier finden Sie eine Anleitung für virtuelle Hosts auf MAMP http://sawmac.com/mamp/virtual/


Um mehrere Sites mit aktiviertem HTTPS zu hosten, benötigen sie meiner Meinung nach jeweils eine separate IP-Adresse. Siehe: stackoverflow.com/questions/11217538/…
user1086746

@ user1086746 Apache unterstützt die TLS-Servernamenanzeige, ebenso wie alle gängigen Client-Browser. So ziemlich jedes Betriebssystem, das nicht Windows XP ist. Die Antwort, die Sie auf Ihre verknüpfte Frage hätten erhalten sollen, lautet Festlegen NameVirtualHost *:443.
Shane Madden

@Shane, das immer noch nicht zu funktionieren scheint, wenn mehrere Sites mit HTTPS über dieselbe IP-Adresse bearbeitet werden. Ich habe gepostet, was letztendlich für mich funktioniert hat.
user1086746

@ user1086746 Es funktioniert mit Sicherheit; Ich vermute, dass Sie NameVirtualHostnicht mit Ihren <VirtualHost>Blöcken übereinstimmen , wenn Sie speziell an 127.0.0.1 gebunden haben. Egal in diesem Fall, da Sie eine funktionierende Lösung gefunden haben, aber NoNoNo ist richtig - Sie benötigen keine zusätzlichen IPs.
Shane Madden

Nun, ich möchte, dass dies "richtig" funktioniert, da das Einrichten dieser IP-Adressen ein zusätzlicher Schritt ist. Ich habe 2 NameVirtualHosts wie: NameVirtualHost *:80 NameVirtualHost *:443 und habe versucht, vhosts wie: <VirtualHost _default_:443>und zu verwenden <VirtualHost 127.0.0.1:443>, aber keine stellt nach dem ersten aufgelisteten vhost eine HTTPS-Verbindung bereit. Ich könnte die vollständigen Dateien ssl.conf und vhost.conf bereitstellen, wenn Sie interessiert wären!
user1086746

22

Um alias localhost zu verwenden, können Sie diesen Terminalbefehl verwenden, um einen 'Loopback' zu erstellen:

ifconfig lo0 alias 127.0.0.2

Mit dem Alias-Setup von localhost können Sie mehrere virtuelle HTTPS-Hosts auf folgende Weise erstellen:

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

Sie können diese Hosts bei Bedarf auch beim Start über root's cron initialisieren:

sudo crontab -e
@reboot ifconfig lo0 alias 127.0.0.2

Hoffentlich hilft dies jedem, der auf die gleichen Probleme stößt wie ich!


Verwenden echo PASSWORDist eine schreckliche Idee. Eine grobe Alternative wäre, etwas wie sudo crontab -eund in Roots Cron zu setzen @reboot ifconfig lo0 alias 127.0.0.2. Es gibt sicherlich eine elegantere Lösung, aber alles, was Ihr Passwort im Klartext betrifft, ist inakzeptabel.
Chmac

1
Wow, das macht viel Spaß! Ich benutze dies für die Weiterleitung von SSH-Ports . Dies ermöglicht die mehrfache Weiterleitung desselben Ports durch Abhören verschiedener lokaler IP-Adressen. ZB ssh -L 127.0.0.2:443 foo:443 -L 127.0.0.3:443 beta.foo:443 user@host. Sie können dann /etc/hostsbei Bedarf Hostnamen für diese lokalen IP-Adressen in Ihrer Datei definieren. Es stellt sich als sehr nützlich für die Webentwicklung und das Testen / Remoting heraus, insbesondere wenn Sie keine benutzerdefinierten Ports für Ihre Anwendungen verwenden können.
djule5

2

Sie müssen dem lokalen Host unter Linux oder Windows niemals zusätzliche IP-Adressen hinzufügen. Sie antworten standardmäßig ohne zusätzliche Konfiguration auf alle IP-Adressen von 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

Lassen Sie Ihre Anwendung also einfach eine IP aus dem Bereich 127.0.0.0/8 abhören, und schon kann es losgehen.

Beispiel:

Eine Konsole:

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

Eine andere Konsole:

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

Als Kommentator erwähnt, es ist notwendig , IPs auf den lokalen Host - Schnittstelle explizit auf MacOS / Darwin hinzuzufügen.


Ohne den Alias ​​auf der Loopback-Oberfläche kann ich anscheinend nicht hören. Der Versuch nc -vvl 127.0.34.2 9022kehrt zurück nc: Can't assign requested address. Mit dem mit definierten Alias ifconfig lo0 alias 127.0.34.2funktioniert es. Irgendwelche Ideen, warum das so ist? Läuft unter OSX Yosemite.
djule5

1
Unter Mac wird nur 127.0.0.1 dem Gerät lo0 (Loopback) zugeordnet. Sie müssen dem Loopback-Gerät manuell einen Alias ​​hinzufügen, damit es funktioniert. Unter Linux werden jedoch alle 127.0.0. * Dem Loopback-Gerät zugeordnet.
Sriram

1
Für Mac: sudo ifconfig lo0 alias 127.0.0.2 up (und so weiter, muss für jede Adresse einzeln durchgeführt werden)
lilalinux
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.