Assegnazione di più indirizzi IP a localhost OS X 10.6


9

Sto tentando di ospitare localmente più siti Web con HTTPS abilitato, ma per fare ciò dovrei configurare il mio computer locale per utilizzare più indirizzi IP per localhost (credo). Esiste un modo per far sì che più indirizzi IP si risolvano localmente contemporaneamente?

Sto usando OS X 10.6 (edizione standard - non server) e la configurazione del server MAMP.

Grazie!

Risposte:


3

Non hai bisogno di più IP per ospitare più siti Web su un server Web. Devi usare "Virtual Hosts" (con https se ne hai bisogno anche). Ecco una guida per host virtuali su MAMP http://sawmac.com/mamp/virtual/


Per ospitare più siti con HTTPS abilitato, credo che ognuno di essi abbia bisogno di un indirizzo IP separato. Vedi: stackoverflow.com/questions/11217538/...
user1086746

@ user1086746 Apache supporta l'indicazione del nome del server TLS, così come tutti i principali browser client su ... praticamente tutti i sistemi operativi che non sono Windows XP. La risposta che avresti dovuto ottenere sulla tua domanda collegata è quella di impostare NameVirtualHost *:443.
Shane Madden,

@Shane che ancora non sembra funzionare quando si ha a che fare con più siti utilizzando HTTPS sullo stesso indirizzo IP. Ho pubblicato ciò che ha finito per funzionare per me.
user1086746

@ user1086746 Funziona sicuramente; Immagino NameVirtualHostche non abbinassi i tuoi <VirtualHost>blocchi, se ti legassi specificamente a 127.0.0.1. Non importa in questo caso poiché hai trovato una soluzione funzionante, ma NoNoNo ha ragione: non hai bisogno di IP aggiuntivi.
Shane Madden,

Bene, vorrei che questo funzionasse 'correttamente' poiché la configurazione di quegli indirizzi IP è un passo in più. Ho 2 NameVirtualHosts come: NameVirtualHost *:80 NameVirtualHost *:443 e ho provato ad usare vhosts come: <VirtualHost _default_:443>e <VirtualHost 127.0.0.1:443>, ma nessuno dei due fornirà una connessione HTTPS dopo il primo vhost elencato. Potrei fornire tutti i file ssl.conf e vhost.conf se fossi interessato!
user1086746

22

Alias ​​localhost, è possibile utilizzare questo comando terminal per creare un "loopback":

ifconfig lo0 alias 127.0.0.2

Con la configurazione dell'alias localhost, è possibile creare più host virtuali HTTPS in questo modo:

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

Puoi anche inizializzare questi host all'avvio, se lo desideri, tramite il cron di root:

sudo crontab -e
@reboot ifconfig lo0 alias 127.0.0.2

Spero che questo aiuti chiunque incontri gli stessi problemi che ho fatto!


Usare echo PASSWORDè un'idea terribile . Un'alternativa grezza sarebbe quella di mettere qualcosa nel cron di root come sudo crontab -ee @reboot ifconfig lo0 alias 127.0.0.2. Esiste sicuramente una soluzione più elegante, ma tutto ciò che coinvolge la tua password in testo normale è inaccettabile.
chmac,

1
Wow, è molto divertente! Lo uso per il port forwarding ssh . Ciò consente di inoltrare la stessa porta più volte ascoltando diversi indirizzi IP locali. Es ssh -L 127.0.0.2:443 foo:443 -L 127.0.0.3:443 beta.foo:443 user@host. È quindi possibile definire i nomi host per questi indirizzi IP locali nel /etc/hostsfile, se necessario. Risulta essere molto utile per lo sviluppo web e test / remoting, specialmente se non puoi usare porte personalizzate per le tue applicazioni.
djule5,

2

Non è mai necessario aggiungere ulteriori indirizzi IP all'host locale su Linux o Windows. Risponderanno per impostazione predefinita, senza ulteriore configurazione, a tutti gli indirizzi IP da 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

Quindi fai semplicemente in modo che la tua applicazione ascolti su qualsiasi IP dalla gamma 127.0.0.0/8 e sarai pronto per partire.

Esempio:

Una console:

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

Un'altra console:

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

Come ha osservato un commentatore, è necessario aggiungere esplicitamente gli IP all'interfaccia localhost su MacOS / Darwin.


Non riesco ad essere in grado di ascoltare senza l'alias sull'interfaccia di loopback. Provare nc -vvl 127.0.34.2 9022ritorni nc: Can't assign requested address. Con l'alias definito con ifconfig lo0 alias 127.0.34.2, funziona. Qualche idea sul perché? In esecuzione su OSX Yosemite.
djule5,

1
Su Mac, solo 127.0.0.1 è mappato sul dispositivo lo0 (loopback). È necessario aggiungere manualmente un alias al dispositivo di loopback per farlo funzionare. Ma in Linux, tutti i 127.0.0. * Sono mappati sul dispositivo di loopback.
Sriram,

1
Per Mac: sudo ifconfig lo0 alias 127.0.0.2 in su (e così via, deve essere fatto singolarmente per ogni indirizzo)
lilalinux
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.