Onde definir a diretiva raiz em nginx.conf

1

Eu tenho uma pergunta sobre a configuração do nginx em um servidor que manipula diferentes hosts virtuais. Estou agora um pouco confuso em que a diretiva root deveria estar. Eu vi as duas possibilidades seguintes.

Variante A

server {
listen          80;
server_name     www.site.com;
access_log      /var/log/nginx/www.site.com.access.log main;
root            /var/www/$server_name/htdocs;

location / {
   index index.html;
   }
}

ou o outro

Variante B

server {
listen          80;
server_name     www.site.com;
access_log      /var/log/nginx/www.site.com.access.log main;

location / {
   root         /var/www/$server_name/htdocs;
   index        index.html;
   }
}

Estou um pouco confuso se as duas variantes forem iguais. Para os diferentes vhosts, planejei ter arquivos .conf individuais com diferentes diretivas server_name e root em /etc/nginx/sites-available . Para ativar um vhost, eu teria um link simbólico para o arquivo conf em /etc/nginx/sites-enabled . Ou você armazenaria o arquivo de configuração em /var/www/$server_name para tê-lo "próximo" dos dados www?

Então, para resumir, tenho duas perguntas:
1. Qual das duas variantes do arquivo nginx.conf é melhor para a configuração de vários vhosts e por quê?
2. Onde você armazenaria os arquivos de configuração para cada vhost?

Obrigado.

    
por GorillaPatch 15.07.2010 / 17:37

1 resposta

3

A variante A é a maneira correta de fazer isso. O Nginx sempre usará apenas um bloco de localização, portanto, se você definir root em um local, ele estará disponível apenas naquele local. Isso quase sempre leva à duplicação de diretivas raiz de caminhos de arquivos, nenhuma das quais é boa.

Se você defini-lo no bloco do servidor, ele será sempre herdado pelos blocos de localização, de modo que sempre estará disponível na variável $ document_root, evitando assim a duplicação de caminhos de arquivos.

    
por 15.07.2010 / 21:35