J'ai besoin de tester des sous-domaines sur mon hôte local. Comment puis-je obtenir ce résultat en ajoutant *.localhost.com
à mon /etc/hosts/
fichier?
Si ce n'est pas possible, comment contourner ce problème? J'ai besoin de tester des sous-domaines génériques sur mon serveur local. C'est un Django devserver, le serveur de développement Django dev peut-il gérer les sous-domaines? Un autre logiciel/routage peut-il me donner le résultat final que je veux ?
J'ai écrit un proxy DNS en Python. Il lira les entrées génériques dans/etc/hosts. Voir ici: https://github.com/hubdotcom/marlon-tools/blob/master/tools/dnsproxy/dnsproxy.py
Installer dnsmasq (je le fais sur tous mes bureaux Linux comme cache DNS de toute façon). Dans dnsmasq.conf
ajoutez la ligne:
address=/localhost.com/127.0.0.1
Il n'est pas possible de spécifier des caractères génériques dans le /etc/hosts
fichier. Spécifiez explicitement les noms d'hôte requis ou configurez un serveur de noms local avec les règles appropriées.
Personnellement, j'aime créer un fichier PAC pour cela et faire en sorte que mon navigateur l'utilise.
Étape 1: créez un fichier par exemple: *.proxy.pac*
quelque part (j'utilise mon $home
dossier)
Étape 2: collez ce code (l'exemple est avec le port 8000):
function FindProxyForURL(url, Host) {
if (shExpMatch(Host, "*localhost")) {
return "PROXY localhost:8000";
}
return "DIRECT";
}
Étape 3 : faites en sorte que votre navigateur utilise ce fichier PAC.
Vidéo Youtube pour PAC et Firefox
Étape 4 : Vous pouvez maintenant tester votre application en accédant à: http://mysubdomain.localhost/
Étape 5: Profitez :)
J'ai rangé un de mes vieux projets:
https://github.com/airtonix/avahi-aliases
exigences:
Avantages par rapport à l'utilisation de dnsmasq ou du proxy python dns:
Vous ne pouvez pas utiliser de caractère générique dans /etc/hosts
.
Jetez un œil ici pour une bonne procédure pas à pas sur la façon d'accomplir sur OS X en utilisant BIND, le serveur DNS intégré mais inactif, et Apache.
Cette solution basée sur DNS fonctionnait parfaitement dans mon cas, sans avoir besoin d'installer quoi que ce soit: https://Gist.github.com/fedir/04e60d679d5657d1f9f9aa10b3168282 (Mac OSX 10.9)
Si vous voulez utiliser dnsmasq
avec NetworkManager
vous pouvez (ou même devez?) Démarrer dnsmasq
à partir de NetworkManager
en ajoutant
dns=dnsmasq
à /etc/NetworkManager/NetworkManager.conf
. Ensuite, la configuration dnsmasq passe à /etc/NetworkManager/dnsmasq.conf
ou /etc/NetworkManager/dnsmasq.d/
resp.
Une tâche courante pour ce sujet consiste à mapper des répertoires à des sous-domaines. Un moyen très simple pour cela consiste à ajouter automatiquement les entrées basées sur le répertoire 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 Pour la ligne en lignes: Si fileName en ligne: EntryExists = True Sinon entryExists: HostsFile. write ("127.0.0.1" + fileName + ".localhost\n");
dnsmasq a fonctionné pour moi, sauf que j'ai dû faire quelques étapes supplémentaires.
Voici la procédure complète:
Prepend /etc/resolv.conf
avec la ligne suivante
nameserver 127.0.0.1
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
Redémarrez dnsmasq
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
La réponse courte est non. La réponse la plus longue est que vous devez être plus clair sur ce que vous désirez réellement réaliser, car il y a peut-être une meilleure façon et une autre façon de le faire.
Pour l'hébergement Web (je ne l'ai jamais vu utilisé autrement), cela se fait en DNS en combinaison avec un serveur Web compatible avec l'hébergement virtuel. Pour plus d'informations sur enregistrements DNS génériques (Wikipedia), et un article hébergement générique avec Apache et Bind pour Linux utilisant bind et Apache.
Au pire, vous pourriez utiliser un serveur DNS local, je suppose.
Merci tschundeee pour ce que je considère comme la réponse ultime à ce problème, j'aimerais simplement commenter, mais voici la configuration totale pour ceux qui essaient d'atteindre l'objectif initial (les caractères génériques pointent tous vers le même code - n'installez rien, environnement de développement, c.-à-d. , XAMPP)
fichier:/etc/hosts (non-windows)
127.0.0.1 example.local
fichier: /XAMPP/etc/httpd.conf
# Virtual hosts
Include etc/extra/httpd-vhosts.conf
fichier: XAMPP/etc/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin [email protected]
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
enregistrez-le sous n'importe quel fichier.pac où vous voulez, puis chargez le fichier dans le réseau du navigateur> proxy> paramètres de configuration automatique (rechargez si vous modifiez cela)
function FindProxyForURL(url, Host) {
if (shExpMatch(Host, "*example.local")) {
return "PROXY example.local";
}
return "DIRECT";
}