236 votes

Dans mon fichier /etc/hosts/ sous Linux/OSX, comment faire un sous-domaine joker ?

J'ai besoin de tester des sous-domaines sur mon hôte local. Comment puis-je obtenir efficacement ce résultat en ajoutant *.localhost.com à mon /etc/hosts/ fichier ?

Si ce n'est pas possible, comment puis-je contourner ce problème ? Je dois tester des sous-domaines joker sur mon serveur local. Il s'agit d'un serveur de développement Django. Le serveur de développement Django peut-il gérer les sous-domaines ? Un autre logiciel/routeur peut-il me donner le résultat final que je souhaite ?

1 votes

Appartient au superutilisateur ?

0 votes

Je sais que les gens disent que ce n'est pas possible ! Mais comment le faire quand même ! Quelle est la chose en dehors de /etc/hosts/ que je peux utiliser pour obtenir cet effet. Je teste un serveur de développement.

1 votes

Sur le super-utilisateur : unix.stackexchange.com/questions/3352/

2voto

tami Points 11

Réponse courte :

Votre fichier /etc/hosts/ ne vous permettra pas d'utiliser des caractères génériques ou des numéros de port. Vous devrez créer une entrée pour chacun de vos sous-domaines.

2 votes

Qu'est-ce qui vous permettrait de spécifier les numéros de port ? Pas le DNS AFAIK.

2voto

mctylr Points 855

La réponse courte est que vous ne le faites pas. La réponse plus longue est que vous devez être plus clair sur ce que vous souhaitez réaliser, parce qu'il y a peut-être un meilleur moyen ou un moyen différent d'y parvenir.

Pour l'hébergement web (je ne l'ai jamais vu utilisé autrement), cela se fait dans le DNS en combinaison avec un serveur web conscient de l'hébergement virtuel. Pour plus d'informations sur enregistrements DNS de type wildcard (Wikipedia), et un article Hébergement Wildcard avec Apache et Bind pour Linux en utilisant bind et Apache.

Au pire, vous pourriez utiliser un serveur DNS local, je suppose.

2voto

Michel Keijzers Points 223

Dnsmasq a fonctionné pour moi, sauf que j'ai dû faire quelques étapes supplémentaires.

Voici la procédure complète :

  1. Préparez /etc/resolv.conf avec la ligne suivante

     nameserver 127.0.0.1
  2. Ajoutez les lignes suivantes à /etc/dnsmasq.conf

     listen-address=127.0.0.1
     address=/localhost.localdomain/127.0.0.1
     address=/localhost/127.0.0.1
  3. Redémarrez dnsmasq (ne dites pas simplement à dnsmasq de recharger les fichiers de configuration)

1 votes

Cela ne fonctionnera pas si votre distribution utilise netplan (ubuntu 18.04, je vous regarde).

0 votes

C'est triste. Je viens de découvrir que netplan est sorti pour la première fois en juillet 2016. Je suis sûr que leur façon de faire est "meilleure".

2voto

Lukas Glowania Points 121

Une tâche courante dans ce domaine consiste à faire correspondre les répertoires aux sous-domaines. Une façon très simple de le faire est d'ajouter automatiquement les entrées basées sur les répertoires au fichier hosts :

#!/usr/bin/python

import os

hostsFile = open("/etc/hosts", "a+");

lines = hostsFile.readlines()

for fileName in os.listdir('/opt/subdomainDirs'):

    entryExists = False
    for line in lines:
        if fileName in line:
            entryExists = True  

    if not entryExists:
        hostsFile.write("127.0.0.1 " + fileName + ".localhost\\n");

2voto

Daniel Jordi Points 21

Merci tschundeee pour ce que je considère être la réponse ultime à ce problème, j'aimerais pouvoir simplement commenter mais voici la configuration totale pour ceux qui essaient d'accomplir le but original (les wildcards pointent tous vers la même base de code -- ne rien installer, environnement de développement c'est-à-dire XAMPP)

fichier hosts (ajouter une entrée)

fichier : /etc/hosts (non-Windows)

127.0.0.1   example.local

Configuration de httpd.conf (activer les 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 sous le nom de whatever.pac où vous voulez et chargez ensuite le fichier dans les paramètres réseau>proxy>auto_configuration du navigateur (rechargez si vous modifiez ceci)

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X