Question

Je souhaite configurer mon ordinateur de développement local de sorte que toutes les demandes de *.local soient redirigées vers localhost. L'idée est que, lorsque je développe plusieurs sites, je peux simplement ajouter des hôtes virtuels à Apache, appelés site1.local, site2.local etc., et les résoudre tous en c:\windows\system32\drivers\etc\hosts, pendant qu'Apache gère un site différent en conséquence.

Je suis sous Windows XP.

J'ai essayé d'ajouter

127.0.0.1       *.local

vers mon <=> fichier, a également essayé:

127.0.0.1       .local

Aucune ne semble fonctionner.

Je sais que je peux les configurer pour différents numéros de port, mais cela pose un problème car il est difficile de se rappeler quel port correspond à quel port.

Je ne veux pas avoir à installer un serveur DNS local ou quelque chose de dur, des suggestions?

Était-ce utile?

La solution

Acrylic DNS Proxy (gratuit, open source) fait le travail. Il crée un serveur proxy DNS (sur votre propre ordinateur) avec son propre fichier hôtes. Le fichier hosts accepte les caractères génériques.

Télécharger depuis le site Web officiel

http://mayakron.altervista.org/support/browse.php ? path = Acrylic & amp; name = Home

Configuration du proxy DNS acrylique

Pour configurer le proxy DNS acrylique, installez-le à partir du lien ci-dessus, puis accédez à:

  1. Démarrer
  2. Programmes
  3. Proxy DNS acrylique
  4. Config
  5. Modifier le fichier d'hôtes personnalisé (AcrylicHosts.txt)

Ajoutez les lignes suivantes à la fin du fichier:

127.0.0.1   *.localhost
127.0.0.1   *.local
127.0.0.1   *.lc

Redémarrez le service Proxy DNS acrylique:

  1. Démarrer
  2. Programmes
  3. Proxy DNS Acrilic
  4. Config
  5. Redémarrer le service acrylique

Vous devrez également ajuster votre paramètre DNS dans vos paramètres d'interface réseau:

  1. Démarrer
  2. Panneau de configuration
  3. Réseau et Internet
  4. Connexions réseau
  5. Propriétés de connexion au réseau local
  6. TCP / IPv4

Définissez & "Utilisez l'adresse de serveur DNS suivante &";

.
Preferred DNS Server: 127.0.0.1

Si vous combinez ensuite cette réponse avec la réponse de jeremyasnyder (avec VirtualDocumentRoot), vous pouvez alors configurer automatiquement les hôtes de domaines / virtuels en créant simplement un répertoire.

Autres conseils

Pour répondre à votre question, vous ne pouvez pas utiliser de caractères génériques dans le fichier hosts sous Windows.

Cependant, si vous souhaitez uniquement modifier le fichier hosts pour faire fonctionner de nouveaux sites, vous pouvez configurer votre Apache comme ceci et vous n'avez pas besoin de continuer à l'éditer, c'est config:

http://postpostmodern.com/instructional/a-smarter-mamp/

Fondamentalement, un résumé rapide basé sur ma configuration, ajoutez ce qui suit dans votre fichier apache.conf:

 LoadModule vhost_alias_module modules/mod_vhost_alias.so

 NameVirtualHost *:80

  <Directory "/xampp/sites">
      Options Indexes FollowSymLinks Includes ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all 
  </Directory>

  <VirtualHost *:80>
      VirtualDocumentRoot c:/xampp/sites/%-1/%-2+/
  </VirtualHost>

Cela me permet d'ajouter une entrée telle que:

127.0.0.1       test.dev

puis faites le répertoire c: \ xampp \ sites \ dev \ test et placez-y les fichiers nécessaires et cela fonctionnera.

L’autre option consiste à utiliser <Directory> les balises dans apache.conf et à référencer les pages de http: // localhost / project /. .

Je ne pense pas que ce soit possible.

De toute façon, vous devez modifier les entrées de la racine virtuelle Apache à chaque fois que vous ajoutez un nouveau site et un nouvel emplacement. Par conséquent, synchroniser le nouveau nom dans le fichier vhost de Windows n’est pas une lourde tâche.

Mise à jour: veuillez vérifier la réponse suivante et les commentaires sur cette réponse. Cette réponse a 6 ans et n'est plus correcte.

Pour ajouter aux excellentes suggestions déjà présentées ici, XIP.IO est un fantastique DNS générique. serveur accessible au public.

      myproject.127.0.0.1.xip.io  -- resolves to -->   127.0.0.1
  other.project.127.0.0.1.xip.io  -- resolves to -->   127.0.0.1
   other.machine.10.0.0.1.xip.io  -- resolves to -->   10.0.0.1

(La possibilité de spécifier des adresses sans bouclage est fantastique pour tester des sites sur des périphériques iOS où vous ne pouvez pas accéder à un fichier hôtes.)

Si vous combinez cela avec certaines des configurations Apache mentionnées dans d'autres réponses, vous pouvez éventuellement ajouter des hôtes virtuels avec zéro configuration .

J'ai trouvé un article sur Utiliser le fichier d'hôtes Hosts Windows qui indique également "Aucun caractère générique autorisé. &";

Auparavant, je venais d'ajouter les entrées supplémentaires au fichier hosts car, comme indiqué précédemment, cela ne représente pas beaucoup de travail supplémentaire lorsque vous modifiez déjà le fichier de configuration apache.

La modification du fichier hosts est moins pénible lorsque vous exécutez & "ipconfig / flushdns &"; à partir de l'invite de commande Windows au lieu de redémarrer votre ordinateur.

Vous pouvez demander à votre administrateur réseau de vous configurer un domaine (par exemple, "evilpuppetmaster.hell") et de conserver le caractère générique afin que tout (* .evilpuppetmaster.hell ") soit corrigé en adresse IP

.

Nous travaillons avec un DNS générique dans notre serveur DNS local: ajoutez un A enregistrement similaire à *.local -> 127.0.0.1

.

Je pense que vos paramètres réseau devront avoir le suffixe de domaine choisi dans la liste de recherche de suffixe de domaine pour les ordinateurs du réseau. Vous voudrez peut-être remplacer .local par le domaine interne de votre société (par exemple .int) et puis ajoutez un sous-domaine tel que .localhost.int pour préciser son rôle.

Ainsi, *.localhost.int serait résolu en 127.0.0.1 pour tout le monde sur le réseau et les paramètres de configuration du fichier pour tous les développeurs & "; il suffit de travailler &"; si les noeuds finaux sont hors de ce sous-domaine, par exemple site1.localhost.int, site2.localhost.int C'est à peu près le schéma que nous avons mis en place.

Dnsmasq a également l’air sympa, mais je ne l’ai pas encore essayé: http://ihaveabackup.net/2012/06/ 28 / using-wildcards-in-the-hosts-file /

J'ai écrit un proxy DNS simple en Python. Il lira les entrées génériques dans / etc / hosts. Voir ici: http://code.google. com / p / marlon-tools / source / browse / tools / dnsproxy / dnsproxy.py

J'ai testé sous Linux & amp; Mac OS X, mais pas encore sous Windows.

Vous pouvez essayer AngryHosts , qui offre un moyen de prendre en charge les caractères génériques et les expressions régulières. En fait, il s’agit d’un logiciel d’amélioration et de gestion de fichiers hôtes.
Plus de fonctionnalités peuvent être consultées @ http://angryhosts.com/features/

J'utilise DNSChef pour le faire.

https://thesprawl.org/projects/dnschef/

Vous devez télécharger l'application. Sous Linux ou Mac, vous avez besoin de python pour l'exécuter. Windows a son propre fichier.

Vous devez créer un fichier ini avec vos entrées DNS, par exemple

.
[A]
*.google.com=192.0.2.1
*.local=127.0.0.1
*.devServer1.com=192.0.2.3

Ensuite, vous devez lancer l'application DNS avec les privilèges d'administrateur

.
sudo python dnschef.py --file myfile.ini -q

ou dans des fenêtres

runas dnschef.exe --file myfile.ini -q

Enfin, vous devez configurer comme seul DNS votre environnement hôte local (réseau, interface, DNS ou similaire, ou sous linux /etc/resolv.conf).

c'est tout

J'ai créé cet outil simple pour remplacer les hôtes. Les expressions régulières sont supportées. https://github.com/stackia/DNSAgent

Un exemple de configuration:

[
    {
        "Pattern": "^.*$",
        "NameServer": "8.8.8.8"
    },
    {
        "Pattern": "^(.*\\.googlevideo\\.com)|((.*\\.)?(youtube|ytimg)\\.com)$",
        "Address": "203.66.168.119"
    },
    {
        "Pattern": "^.*\\.cn$",
        "NameServer": "114.114.114.114"
    },
    {
        "Pattern": "baidu.com$",
        "Address": "127.0.0.1"
    }
]

Je n'ai trouvé aucune interdiction par écrit, mais, par convention, le fichier d'hôtes Windows suit de près le fichier d'hôtes UNIX et vous ne pouvez pas y insérer de références génériques de nom d'hôte.

Si vous lisez la page de manuel, elle indique:

DESCRIPTION
     The hosts file contains information regarding the known hosts on the net-
     work.  For each host a single line should be present with the following
     information:

           Internet address
           Official host name
           Aliases

Bien qu'il soit dit,

     Host names may contain any printable character other than a field delim-
     iter, newline, or comment character.

ce n'est pas vrai d'un point de vue pratique.

En gros, le code qui regarde le fichier / etc / hosts ne prend pas en charge les entrées génériques.

La solution consiste à créer toutes les entrées à l’avance. Vous pouvez éventuellement utiliser un script pour placer quelques centaines d’entrée à la fois.

@petah and Acrylic DNS Proxy est la meilleure réponse. À la fin, il fait référence à la possibilité de créer plusieurs sites en utilisant un Apache, ce que @jeremyasnyder décrit un peu plus bas ...

... cependant, dans notre cas, nous testons un système d'hébergement multi-locataires et ainsi, la plupart des domaines que nous souhaitons tester vont au même virtualhost, tandis que quelques autres sont dirigés ailleurs.

Donc, dans notre cas, vous utilisez simplement les caractères génériques regex dans la directive ServerAlias, comme suit ...

ServerAlias *.foo.local

Voici la configuration totale pour ceux qui tentent d'atteindre l'objectif (caractères génériques dans l'environnement de développement, c.-à-d. XAMPP - cet exemple suppose que tous les sites pointant sur la même base de code)

fichier hosts (ajouter une entrée)

fichier:% SystemRoot% \ system32 \ drivers \ etc \ hosts

127.0.0.1   example.local

Configuration de httpd.conf (enable vhosts)

fichier: \ XAMPP \ etc \ httpd.conf

# Virtual hosts
Include etc\extra\httpd-vhosts.conf

Configuration de httpd-vhosts.conf

fichier: XAMPP \ etc \ extra \ httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin admin@example.local
    DocumentRoot "\path_to_XAMPP\htdocs"
    ServerName example.local
    ServerAlias *.example.local
#    SetEnv APP_ENVIRONMENT development
#    ErrorLog "logs\example.local-error_log"
#    CustomLog "logs\example.local-access_log" common
</VirtualHost>

redémarrer apache

créer un fichier pac:

enregistrez-le sous le nom de fichier.pac où vous voulez, puis chargez le fichier dans le réseau du navigateur > proxy > paramètres de configuration automatique (rechargez-le si vous le modifiez)

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}

Vous pouvez utiliser echoipdns pour cela ( https://github.com/zapty/echoipdns ).

En exécutant echoipdns local toutes les demandes de sous-domaines .local sont redirigées vers 127.0.0.1, ainsi tous les domaines avec xyz.local etc. seront résolus en 127.0.0.1. Vous pouvez utiliser n’importe quel autre suffixe et remplacer simplement local par le nom de votre choix.

Echoipdns est encore plus puissant: lorsque vous souhaitez utiliser votre URL à partir d’autres machines du réseau, vous pouvez toujours l’utiliser avec une configuration zéro.

Par exemple Si l'adresse IP de votre machine est 192.168.1.100, vous pouvez désormais utiliser un nom de domaine xyz.192-168-1-100.local, qui sera toujours résolu en 192.168.1.100. Echoipdns effectue cette magie en examinant l'adresse IP dans la deuxième partie du nom de domaine et en renvoyant la même adresse IP lors d'une requête DNS. Vous devrez exécuter les echoipdns sur la machine à partir de laquelle vous souhaitez accéder au système distant.

echoipdns peut également être configuré en tant que proxy DNS autonome. Par conséquent, il vous suffit de pointer sur ce DNS pour profiter de tous les avantages susmentionnés sans exécuter à chaque fois une commande spéciale, et même à partir d'appareils mobiles.

Cela simplifie donc essentiellement le développement DNS basé sur le domaine générique pour les environnements locaux et d'équipe.

echoipdns fonctionne sur Mac, Linux et Windows.

REMARQUE: je suis l'auteur de echoipdns.

Configuration pour le sous-domaine nginx config auto avec un proxy DNS acrylique

  

Fichier auto.conf pour le dossier de vos sites nginx

server {
    listen 80;
    server_name ~^(?<branch>.*)\.example\.com;
    root /var/www/html/$branch/public;  

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_log  /var/log/nginx/$branch.error.log error;

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
       try_files $uri /index.php =404;
       fastcgi_pass php-fpm:9000;
       fastcgi_index index.php;
       fastcgi_buffers 16 16k;
       fastcgi_buffer_size 32k;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Ajouter au fichier hôtes Acrylic 127.0.0.1 example.com *.example.com et redémarrer le service Acrylic. $ branch : nom de votre sous-domaine.

Définissez au lieu de racine / var / www / html / $ branch / public; votre chemin de projet

Vous pouvez utiliser un client DNS dynamique tel que http://www.no-ip.com Ensuite, avec un serveur DNS externe, CNAME * .mondomaine.com à mydomain.no-ip.com.

Bien que vous ne puissiez pas ajouter un caractère générique de ce type, vous pouvez ajouter la liste complète des sites dont vous avez besoin, du moins pour les tests, qui fonctionne assez bien pour moi. Dans votre fichier hosts, il vous suffit d'ajouter:

127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local
...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top