Para quem esta acostumado com Apache, já deve ter configurado ou ouvido falar sobre Virtual Host, eu cheguei a explicar a diferença entre Server Block/Virtual Server(Nginx) e Virtual Host(Apache). Bem, isso também é possível no Nginx, mas aqui chamamos de Server Block ou Virtual Server.

A configuração no Nginx é feita dentro de blocks {}, logo existem diversas diretivas. E para configurar um Virtual Server usamos a diretiva server. Dentro dessa diretiva fazemos o setup de um Virtual Server.

Como o Nginx permite vários block no mesmo arquivo de configuração, nesse exemplo vou criar 3 Virtual Servers dentro do block http.

http {
  # Virtual Server 1 (Site principal)
  server {
    listen      80;
    server_name example.com www.example.com;
    root /var/www/www.example.org
    location / {
        try_files $uri $uri/ =404;
    }    
  }
  # Virtual Server 2 (CMS site)
  server {
    listen      80;
    server_name admin.example.com;
    root /var/www/admin.example.com
    location / {
        try_files $uri $uri/ =404;
    }
  }
  # Virtual Server 3 (API site)
  server {
    listen      80;
    server_name api.example.com;
    root /var/www/api.example.com
    location / {
        try_files $uri $uri/ =404;
    }
  }
}

Virtual Host no ambiente de desenvolvimento local

No ambiente de desenvolvimento local também é necessário configurar o arquivo de hosts, localizado em /etc/hosts em sistemas Unix ou em %SystemRoot%\System32\drivers\etc\hosts no Windows.

No arquivo de hosts é necessário adicionar um roteamento para que o domínio que estamos testando seja apontado para o nosso servidor local.

127.0.0.1 example.com www.example.com
127.0.0.1 admin.example.com
127.0.0.1 api.example.com

Concluído todas as configurações no webserver e arquivo de hosts, agora é necessário reiniciar o nginx para alterações terem efeito.

Linux

sudo service nginx reload

OSX

sudo nginx -s reload

Conclusão

Com o Nginx percebemos como é fácil o setup de um Virtual Server, o modo de configuração em block permite maior flexibilidade no setup de um ou vários webserver, talvez por isso que eu prefiro Nginx ao invés do Apache, não só por essa questão mais também por outras questão de performance.