Comment tester nginx sous-domaines sur localhost
Je veux tester nginx sous-domaines avant de le télécharger config pour le serveur. Puis-je le tester sur localhost? J'essaie
server {
listen 80;
server_name localhost;
location /{
proxy_pass http://localhost:8080;
}
}
server {
listen 80;
server_name sub.localhost;
location /{
proxy_pass http://localhost:8080/sub;
}
}
Et il ne fonctionne pas. Shoulld j'ai modifier mon fichier hosts afin de le faire fonctionner? Aussi, après téléchargement du site sur le serveur dois-je modifier et ajouter des enregistrements DNS sub.mydomain.com?
Vous devez vous connecter pour publier un commentaire.
Oui, ajoutez '127.0.0.1 sous.localhost' à votre fichier hosts. Qui sous doit être résolu en quelque sorte. Cela devrait fonctionner.
Puis une fois que vous êtes prêt à aller sur le net, oui, ajouter un à un ou de l'enregistrement cname pour le sous-domaine sous.
Lorsque j'utilise proxy_pass j'ai également inclure le proxy.conf de nginx.
http://wiki.nginx.org/HttpProxyModule
/etc/hosts
devrait lire127.0.0.1 localhost sub.localhost
Pour votre site web avec son propre nom de domaine, vous avez juste besoin d'ajouter un nom Canonique à l'aide d'un enregistrement CNAME dans votre configuration DNS:
Une fois que c'est fait, votre nginx réglage
Dans votre configuration, vous pouvez garder la même configuration pour nginx, mais sauf si vous avez un DNS local de l'installation, vous devrez modifier votre fichier /etc/hosts et ajouter chaque sous-domaine manuellement. les caractères génériques ne fonctionnent pas dans le fichier /etc/hosts.
Il est généralement recommandé d'utiliser .locales comme l'espace de noms pour vos domaines locaux.
Dans le système d'exploitation basé sur Linux pour éditer comme
sudo
/etc/hosts
fichier et modifier127.0.0.1 localhost
à127.0.0.1 *.localhost
.Donc à
/etc/nginx/sites-enabled/<environment>/<your_project_name>
modifierserver_name
clés comme<subdomain>.localhost
.Recharger nginx et de service de réseau.
Et puis essayez
http://<subdomain>.localhost
à la barre d'url.Cela fonctionne pour moi.
Mise à JOUR
À mon avis, une meilleure solution est la création d'un serveur virtuel qui répond uniquement si le sous-domaine n'existe pas, à
/etc/nginx/sites-enabled/development/default
, comme serveur par défaut (n'oubliez pas que vous pouvez définir qu'un seul serveur par défaut).Assurez-vous que dans
nginx.conf
(généralement à/etc/nginx/nginx.conf
) contiennentinclude /etc/nginx/sites-enabled/**/*;
à ce serveur virtuel de travail. Si pas, le mettre et puis exécutez$ sudo service nginx reload
.Dans ce cas n'est pas nécessaire de mettre
*.localhost
dans/etc/hosts
, mais seulementlocalhost
.*
ne sont pas autorisés dans/etc/hosts
selon man7.org/linux/man-pages/man5/hosts.5.htmllocalhost
mais pas avec tous les autres noms de domaine.