Atribuindo vários endereços IP ao host local OS X 10.6


9

Estou tentando hospedar vários sites localmente com HTTPS ativado, mas para fazer isso, preciso configurar minha máquina local para usar vários endereços IP para o host local (acredito). Existe alguma maneira de vários endereços IP serem resolvidos localmente ao mesmo tempo?

Estou usando o OS X 10.6 (edição padrão - não servidor) e a configuração do servidor MAMP.

Obrigado!

Respostas:


3

Você não precisa de vários IPs para hospedar vários sites em um servidor web. Você precisa usar "Hosts Virtuais" (com https, se necessário). Aqui há um guia para hosts virtuais no MAMP http://sawmac.com/mamp/virtual/


Para hospedar vários sites com HTTPS ativado, acredito que cada um deles precise de um endereço IP separado. Veja: stackoverflow.com/questions/11217538/…
user1086746

@ user1086746 O Apache suporta a indicação de nome de servidor TLS, assim como todos os principais navegadores clientes .. praticamente todos os sistemas operacionais que não são o Windows XP. A resposta que você deveria ter recebido em sua pergunta vinculada é definir NameVirtualHost *:443.
Shane Madden

@ Shane que ainda parece não funcionar ao lidar com vários sites usando HTTPS no mesmo endereço IP. Eu postei o que acabou funcionando para mim.
user1086746

@ user1086746 Certamente funciona; Suponho que você NameVirtualHostnão correspondeu aos seus <VirtualHost>blocos, se você estivesse vinculando especificamente ao 127.0.0.1. Não importa neste caso, desde que você encontrou uma solução funcional, mas o NoNoNo está certo - você não precisa de IPs extras.
Shane Madden

Bem, eu gostaria que isso funcionasse 'corretamente', pois a configuração desses endereços IP é uma etapa extra. Eu tenho 2 NameVirtualHosts como: NameVirtualHost *:80 NameVirtualHost *:443 e tentei usar vhosts como: <VirtualHost _default_:443>e <VirtualHost 127.0.0.1:443>, mas nenhum deles fornecerá uma conexão HTTPS após o primeiro vhost listado. Eu poderia fornecer os arquivos ssl.conf e vhost.conf completos, se você estivesse interessado!
user1086746

22

Para alias localhost, você pode usar este comando terminal para criar um 'loopback':

ifconfig lo0 alias 127.0.0.2

Com a configuração do alias localhost, você pode criar vários hosts virtuais HTTPS da seguinte maneira:

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

Você também pode inicializar esses hosts na inicialização, se desejar, através do cron do root:

sudo crontab -e
@reboot ifconfig lo0 alias 127.0.0.2

Espero que isso ajude qualquer um que tenha os mesmos problemas que eu!


Usar echo PASSWORDé uma péssima ideia. Uma alternativa grosseira seria colocar algo no cron do root como sudo crontab -ee @reboot ifconfig lo0 alias 127.0.0.2. Certamente há uma solução mais elegante, mas qualquer coisa que envolva sua senha em texto simples é inaceitável.
chmac

1
Uau, isso é muito divertido! Eu uso isso para encaminhamento de porta ssh . Isso permite encaminhar a mesma porta várias vezes, ouvindo diferentes endereços IP locais. Por exemplo ssh -L 127.0.0.2:443 foo:443 -L 127.0.0.3:443 beta.foo:443 user@host. Você pode definir nomes de host para esses endereços IP locais no seu /etc/hostsarquivo, se necessário. Isso acaba sendo bastante útil para o desenvolvimento e teste / comunicação remota na Web, especialmente se você não pode usar portas personalizadas para seus aplicativos.
precisa saber é o seguinte

2

Você nunca precisa adicionar endereços IP adicionais ao host local no Linux ou Windows. Eles responderão por padrão, sem configuração adicional, a todos os endereços IP de 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

Portanto, basta fazer seu aplicativo ouvir qualquer IP do intervalo 127.0.0.0/8 e você estará pronto para prosseguir.

Exemplo:

Um console:

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

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

Como comentou um comentarista, é necessário adicionar IPs à interface localhost explicitamente no MacOS / Darwin.


Não consigo ouvir sem o pseudônimo na interface de loopback. Tentando nc -vvl 127.0.34.2 9022devoluções nc: Can't assign requested address. Com o alias definido com ifconfig lo0 alias 127.0.34.2, ele funciona. Alguma idéia do porquê disso? Executando no OSX Yosemite.
precisa saber é o seguinte

1
No Mac, apenas 127.0.0.1 é mapeado para o dispositivo lo0 (loopback). Você precisa adicionar manualmente o alias ao dispositivo de loopback para fazê-lo funcionar. Mas no Linux, todos os 127.0.0. * São mapeados para o dispositivo de loopback.
Sriram

1
Para Mac: sudo ifconfig lo0 apelido 127.0.0.2-se (e assim por diante, deve ser feito individualmente para cada endereço)
lilalinux
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.