Asignación de múltiples direcciones IP a localhost OS X 10.6

9

Estoy tratando de alojar múltiples sitios web localmente con HTTPS habilitado, pero para hacer esto necesitaría configurar mi máquina local para usar múltiples direcciones IP para localhost (creo). ¿Hay alguna manera de tener múltiples direcciones IP resolviendo localmente al mismo tiempo?

Estoy usando OS X 10.6 (edición estándar, no servidor) y la configuración del servidor MAMP.

¡Gracias!

usuario1086746
fuente

Respuestas:

3

No necesita múltiples IP para alojar múltiples sitios web en un servidor web. Debe usar "Hosts virtuales" (con https si también lo necesita). Aquí hay una guía para hosts virtuales en MAMP http://sawmac.com/mamp/virtual/

No no no
fuente
Para alojar múltiples sitios con HTTPS habilitado, creo que cada uno necesita una dirección IP separada. Ver: stackoverflow.com/questions/11217538/…
user1086746
@ user1086746 Apache admite la indicación de nombre de servidor TLS, al igual que todos los principales navegadores de clientes en ... prácticamente todos los sistemas operativos que no son Windows XP. La respuesta que debería haber obtenido en su pregunta vinculada es establecer NameVirtualHost *:443.
Shane Madden
@Shane que todavía no parece funcionar cuando se trata de múltiples sitios que usan HTTPS a través de la misma dirección IP. Publiqué lo que terminó trabajando para mí.
user1086746
@ user1086746 Ciertamente funciona; Supongo NameVirtualHostque no coincidiste con tus <VirtualHost>bloques, si estuvieras vinculando específicamente a 127.0.0.1. No importa en este caso, ya que ha encontrado una solución que funciona, pero NoNoNo es correcto: no necesita direcciones IP adicionales.
Shane Madden
Bueno, me gustaría que esto funcione 'correctamente', ya que configurar esas direcciones IP es un paso adicional. Tengo 2 NameVirtualHosts como: NameVirtualHost *:80 NameVirtualHost *:443 y he intentado usar vhosts como: <VirtualHost _default_:443>y <VirtualHost 127.0.0.1:443>, pero ninguno proporcionará una conexión HTTPS después del primer vhost listado. ¡Podría proporcionarle los archivos completos ssl.conf y vhost.conf si estuviera interesado!
user1086746
22

Para alias localhost, puede usar este comando de terminal para crear un 'loopback':

ifconfig lo0 alias 127.0.0.2

Con la configuración de alias localhost, puede crear múltiples hosts virtuales HTTPS de esta manera:

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

También puede inicializar estos hosts en el inicio, si lo desea, a través del cron de root:

sudo crontab -e
@reboot ifconfig lo0 alias 127.0.0.2

¡Espero que esto ayude a cualquiera que tenga los mismos problemas que yo!

usuario1086746
fuente
Usar echo PASSWORDes una idea terrible . Una alternativa cruda sería poner algo en el cron de root como sudo crontab -ey @reboot ifconfig lo0 alias 127.0.0.2. Ciertamente hay una solución más elegante, pero cualquier cosa que implique su contraseña en texto sin formato es inaceptable.
chmac
1
¡Guau, eso es muy divertido! Lo uso para el reenvío de puertos ssh . Esto permite reenviar el mismo puerto varias veces al escuchar en diferentes direcciones IP locales. Por ej ssh -L 127.0.0.2:443 foo:443 -L 127.0.0.3:443 beta.foo:443 user@host. A continuación, puede definir nombres de host para estas direcciones IP locales en su /etc/hostsarchivo si es necesario. Resulta ser bastante útil para el desarrollo web y la prueba / comunicación remota, especialmente si no puede usar puertos personalizados para sus aplicaciones.
djule5
2

Nunca necesita agregar direcciones IP adicionales al host local en Linux o Windows. Responderán por defecto, sin configuración adicional, a todas las direcciones IP desde 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

Así que solo haga que su aplicación escuche en cualquier IP del rango 127.0.0.0/8 y estará listo para comenzar.

Ejemplo:

Una consola:

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

Otra consola:

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

Como señaló un comentarista, es necesario agregar IPs a la interfaz localhost explícitamente en MacOS / Darwin.

Florin Asăvoaie
fuente
Parece que no puedo escuchar sin el alias en la interfaz de bucle invertido. Intentando nc -vvl 127.0.34.2 9022vueltas nc: Can't assign requested address. Con el alias definido con ifconfig lo0 alias 127.0.34.2, funciona. ¿Alguna idea de por qué es eso? Ejecutando en OSX Yosemite.
djule5
1
En Mac, solo 127.0.0.1 se asigna al dispositivo lo0 (loopback). Debe agregar manualmente el alias al dispositivo de bucle invertido para que funcione. Pero en Linux, todos los 127.0.0. * Se asignan al dispositivo de bucle invertido.
Sriram
1
Para Mac: sudo ifconfig lo0 alias 127.0.0.2 up (y así sucesivamente, debe hacerse individualmente para cada dirección)
lilalinux