Comment tester les sous-domaines nginx sur localhost
je veux tester les sous-domaines nginx avant de télécharger config sur le serveur. Je peux le tester sur localhost? J'ai essayer
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 ça ne fonctionne pas. Dois-je changer mon fichier hosts pour qu'il fonctionne? Aussi, après avoir téléchargé le site sur le serveur si je dois changer les enregistrements DNS et ajouter sub.mydomain.com?
3 réponses
Oui, d'ajouter des sous.localhost 127.0.0.1' vers 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 enregistrement A ou cname pour le sous-domaine sub.
lorsque j'utilise proxy_pass, j'inclus aussi le proxy.conf de nginx. http://wiki.nginx.org/HttpProxyModule
pour votre serveur web public avec son propre nom de domaine, vous avez juste besoin d'ajouter un nom canonique en utilisant un enregistrement CNAME dans votre configuration DNS:
CNAME * example.com.
une fois cela fait, définissez votre paramètre nginx
server_name *.example.com example.com;
dans votre configuration locale, vous pouvez garder la même configuration pour nginx mais à moins d'avoir une configuration DNS locale, vous devrez éditer votre fichier /etc/hosts et ajouter chaque sous-domaine manuellement. les caractères génériques ne fonctionnent pas dans le fichier /etc/hosts.
127.0.0.1 abc.example.com def.example.com ghi.example.com
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 juste pour éditer comme sudo
/etc/hosts
fichier et modifier 127.0.0.1 localhost
127.0.0.1 *.localhost
.
Jusqu'à /etc/nginx/sites-enabled/<environment>/<your_project_name>
modifier server_name
<subdomain>.localhost
.
rechargez nginx et le service de réseau.
$ sudo service nginx reload
$ sudo service networking reload
Et puis essayer http://<subdomain>.localhost
à la barre url.
ça marche pour moi.
UPDATE
a mon avis, Une meilleure solution est de créer un serveur virtuel qui ne répond que 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).
server {
listen 80 default_server;
root /var/www/html/errors/404;
server_name *.localhost *.<host-name>;
location / {
index subdomain.html;
}
}
assurez-vous que nginx.conf
(généralement à l' /etc/nginx/nginx.conf
) contiennent moins de!--13--> à ce travail de serveur virtuel. Si pas, le mettre et puis exécutez $ sudo service nginx reload
.
Dans ce cas n'est pas nécessaire de mettre *.localhost
/etc/hosts
, mais seulement localhost
.