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?

18
demandé sur madhead 2012-04-10 23:34:26

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

19
répondu troseman 2012-05-02 07:54:29

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.

5
répondu Shantanu Bhadoria 2016-10-25 05:06:15

dans le système D'exploitation basé sur Linux juste pour éditer comme sudo /etc/hosts fichier et modifier 127.0.0.1 localhost127.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.

2
répondu rplaurindo 2018-04-26 19:50:01