How to test nginx subdomains on localhost

In Linux based OS just to edit as sudo /etc/hosts file and change 127.0.0.1 localhost to 127.0.0.1 *.localhost.

So at /etc/nginx/sites-enabled/<environment>/<your_project_name> edit server_name key as <subdomain>.localhost.

Reload nginx and networking service.

$ sudo service nginx reload
$ sudo service networking reload

And then try http://<subdomain>.localhost at url bar.

It works for me.

UPDATE

In my opinion, a better solution is creating a virtual server that only responds if subdomain doesn’t exist, at /etc/nginx/sites-enabled/development/default, as default server (remember that you can define only one server as default).

server {
  listen 80 default_server;
  root /var/www/html/errors/404;
  server_name *.localhost *.<host-name>;

  location / {
    index subdomain.html;
  }

}

Make sure that in nginx.conf (generally at /etc/nginx/nginx.conf) contain include /etc/nginx/sites-enabled/**/*; to this virtual server work. If not, put it and then run $ sudo service nginx reload.

In this case isn't necessary put *.localhost in /etc/hosts, but only localhost.


For your public webserver with its own domain name, you just need to add a Canonical name using a CNAME record in your DNS configuration:

CNAME    *    example.com.

Once this is done, set your nginx setting

server_name  *.example.com example.com;

In your local setup you can keep the same configuration for nginx but unless you have a local DNS setup, you will have to edit your /etc/hosts file and add each subdomain manually. wildcards don't work in the /etc/hosts file.

127.0.0.1  abc.example.com def.example.com ghi.example.com

It is generally recommended to use .local as the namespace for your local domains.


Yes, add '127.0.0.1 sub.localhost' to your hosts file. That sub has to be resolved somehow. That should work.

Then once you're ready to go to the net, yes, add an a or cname record for the subdomain sub.

When I use proxy_pass I also include the proxy.conf from nginx. http://wiki.nginx.org/HttpProxyModule