Attribution de plusieurs adresses IP à l'hôte local OS X 10.6


9

J'essaie d'héberger plusieurs sites Web localement avec HTTPS activé, mais pour ce faire, je devrais configurer ma machine locale pour utiliser plusieurs adresses IP pour localhost (je crois). Existe-t-il un moyen de résoudre plusieurs adresses IP simultanément en même temps?

J'utilise OS X 10.6 (édition standard - pas serveur) et la configuration du serveur MAMP.

Merci!

Réponses:


3

Vous n'avez pas besoin de plusieurs IP pour héberger plusieurs sites Web sur un seul serveur Web. Vous devez utiliser "Virtual Hosts" (avec https si vous en avez également besoin). Voici un guide pour les hôtes virtuels sur MAMP http://sawmac.com/mamp/virtual/


Pour héberger plusieurs sites avec HTTPS activé, je pense qu'ils ont chacun besoin d'une adresse IP distincte. Voir: stackoverflow.com/questions/11217538/…
user1086746

@ user1086746 Apache prend en charge l'indication de nom de serveur TLS, comme tous les principaux navigateurs clients sur .. à peu près tous les systèmes d'exploitation qui ne sont pas Windows XP. La réponse que vous auriez dû obtenir sur votre question liée est de définir NameVirtualHost *:443.
Shane Madden

@Shane qui ne semble toujours pas fonctionner avec plusieurs sites utilisant HTTPS sur la même adresse IP. J'ai posté ce qui a fini par fonctionner pour moi.
user1086746

@ user1086746 Cela fonctionne très certainement; Je suppose que vous NameVirtualHostne correspondez pas à vos <VirtualHost>blocs, si vous vous liez spécifiquement à 127.0.0.1. Peu importe dans ce cas puisque vous avez trouvé une solution qui fonctionne, mais NoNoNo a raison - vous n'avez pas besoin d'adresses IP supplémentaires.
Shane Madden

Eh bien, je voudrais que cela fonctionne «correctement» car la configuration de ces adresses IP est une étape supplémentaire. J'ai 2 NameVirtualHosts comme: NameVirtualHost *:80 NameVirtualHost *:443 et j'ai essayé d'utiliser des vhosts comme: <VirtualHost _default_:443>et <VirtualHost 127.0.0.1:443>, mais aucun ne fournira une connexion HTTPS après le premier vhost répertorié. Je pourrais fournir les fichiers ssl.conf et vhost.conf complets si vous étiez intéressé!
user1086746

22

Pour alias localhost, vous pouvez utiliser cette commande de terminal pour créer un «bouclage»:

ifconfig lo0 alias 127.0.0.2

Avec la configuration de l'alias localhost, vous pouvez ainsi créer plusieurs hôtes virtuels HTTPS:

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

Vous pouvez également initialiser ces hôtes au démarrage, si vous le souhaitez, via le cron de root:

sudo crontab -e
@reboot ifconfig lo0 alias 127.0.0.2

J'espère que cela aidera toute personne rencontrant les mêmes problèmes que moi!


L'utilisation echo PASSWORDest une terrible idée. Une alternative grossière serait de mettre quelque chose dans le cron de root comme sudo crontab -eet @reboot ifconfig lo0 alias 127.0.0.2. Il existe certainement une solution plus élégante, mais tout ce qui implique votre mot de passe en texte brut est inacceptable.
chmac

1
Wow, c'est très amusant! J'utilise ceci pour la redirection de port ssh . Cela permet de transférer plusieurs fois le même port en écoutant différentes adresses IP locales. Par exemple ssh -L 127.0.0.2:443 foo:443 -L 127.0.0.3:443 beta.foo:443 user@host. Vous pouvez ensuite définir des noms d'hôtes pour ces adresses IP locales dans votre /etc/hostsfichier si nécessaire. Il s'avère très utile pour le développement Web et les tests / accès à distance, surtout si vous ne pouvez pas utiliser de ports personnalisés pour vos applications.
djule5

2

Vous n'avez jamais besoin d'ajouter des adresses IP supplémentaires à l'hôte local sous Linux ou Windows. Ils répondront par défaut, sans configuration supplémentaire, à toutes les adresses IP à partir 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

Faites donc simplement écouter votre application sur n'importe quelle IP de la gamme 127.0.0.0/8 et vous serez prêt à partir.

Exemple:

Une console:

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

Une autre 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!

Comme l'a noté un commentateur, il est nécessaire d'ajouter explicitement des adresses IP à l'interface localhost sur MacOS / Darwin.


Je n'arrive pas à écouter sans l'alias sur l'interface de bouclage. Essayer des nc -vvl 127.0.34.2 9022retours nc: Can't assign requested address. Avec l'alias défini avec ifconfig lo0 alias 127.0.34.2, cela fonctionne. Des idées pourquoi c'est? Fonctionnant sur OSX Yosemite.
djule5

1
Sous Mac, seul 127.0.0.1 est mappé sur le périphérique lo0 (bouclage). Vous devez ajouter manuellement un alias au périphérique de bouclage pour le faire fonctionner. Mais sous Linux, tous les 127.0.0. * Sont mappés au périphérique de bouclage.
Sriram

1
Pour Mac: sudo ifconfig lo0 alias 127.0.0.2 up (et ainsi de suite, doit être fait individuellement pour chaque adresse)
lilalinux
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.