Eu tenho alguma experiência usando linux, mas nenhum usando nginx. Fui encarregado de pesquisar opções de balanceamento de carga para um servidor de aplicativos.
Eu usei o apt-get para instalar o nginx e tudo parece bem.
Eu tenho algumas perguntas.
Qual é a diferença entre a pasta disponível em sites e a pasta conf.d. Ambas as pastas foram INCLUÍDAS na configuração padrão do nginx. Os tutoriais usam os dois. Para que servem e qual é a melhor prática?
Para que é usada a pasta habilitada para sites? Como eu uso isso?
A configuração padrão faz referência a um usuário www-data? Eu tenho que criar esse usuário? Como concedo a esse usuário permissões ideais para executar o nginx?
linux
ubuntu
nginx
web-server
configuration
Seth Spearman
fonte
fonte
www-data
é um tópico separado. A maioria dos sistemas operacionais define um usuário separado com permissões mais baixas que o processo pode executar após a ligação à porta 80 como raiz. É definido no arquivo de configuração. Aplique práticas básicas de segurança a partir daí; não permita que o usuário grave nada em que o servidor da web não precise gravar, não permita que outros usuários gravem nos arquivos, a menos que seja deliberado.Respostas:
As pastas sites- * são gerenciadas por
nginx_ensite
enginx_dissite
. Para usuários httpd do Apache que encontrarem isso com uma pesquisa, os equivalentes sãoa2ensite
/a2dissite
.A
sites-available
pasta é para armazenar todas as suas configurações de vhost, estejam elas ativadas ou não.A
sites-enabled
pasta contém links simbólicos para arquivos na pasta disponível em sites. Isso permite que você desative seletivamente vhosts removendo o link simbólico.conf.d
faz o trabalho, mas você precisa mover algo para fora da pasta, excluí-lo ou fazer alterações quando precisar desabilitar algo. A abstração da pasta sites- * torna as coisas um pouco mais organizadas e permite gerenciá-las com scripts de suporte separados.(a menos que você seja como eu e um dos muitos administradores do debian que acabou de gerenciar os links simbólicos diretamente, sem conhecer os scripts ...)
fonte
sites-available|sites-enabled
é um debian-ism e não é algo que o nginx ou o Apache fazem. Provavelmente era bastante útil no passado, mas sua utilidade é um pouco limitada em uma era de gerenciamento de configuração e contêineres.nginx.conf
sem perda de legibilidade. Isso é contrário à abordagem de alguns anos atrás, quando os servidores normalmente armazenavam dezenas de sites.Gostaria de acrescentar às respostas anteriores que o mais importante não é como você chama os diretórios (embora seja uma convenção muito útil), mas o que você realmente inseriu
nginx.conf
. Exemplo de configuração:A única diretiva usada aqui é include , portanto não há diferença interna entre eg
conf.d/
esites-enabled/
.A partir da documentação acima:
Portanto, para responder à pergunta original: não há diferença interna e você pode usá-las da melhor maneira possível, lembrando-se dos conselhos das outras respostas. E por favor, não esqueça de escolher a resposta 'certa'.
fonte
sites-enabled
foi um pouco inventado por alguma distribuição, mexendo como um intermediário irritante. Vá pegar o nginx da fonte oficial : você obterá um produto atualizado, além de se livrar dessa porcaria de configuração / inferno.Normalmente, a
sites-enabled
pasta é usada para definições de host virtual, enquantoconf.d
é usada para configuração global do servidor. Se você oferece suporte a vários sites - como hosts virtuais -, cada um obtém seu próprio arquivo, para que você possa habilitá-los e desabilitá-los com muita facilidade, entrando e saindo de arquivossites-enabled
(ou criando e removendo links simbólicos, o que provavelmente é uma ideia melhor).Use
conf.d
para coisas como carregamento de módulos, arquivos de log e outras coisas que não são específicas para um único host virtual.Você deve ter o nginx em execução como um usuário não root. Em alguns casos
www-data
, isso é nomeado , mas você pode nomear o que quiser.Tenho menos certeza da resposta a esta pergunta (não estou executando o nginx no momento), mas se for algo como o Apache, a resposta é que o
www-data
usuário só precisa de permissões de leitura para arquivos estáticos (e leia + execute nos diretórios ) que você está servindo ou lê / executa permissões em coisas como scripts CGI e nenhuma permissão em outro lugar.fonte
root
e houver algum tipo de comprometimento remoto, o invasor terá acesso total ao sistema imediatamente. Ao executar como um usuário sem privilégios, o acesso administrativo só estaria disponível em combinação com algum tipo de exploração local.O que está acontecendo?
Você deve estar usando Debian ou Ubuntu, pois o evil
sites-available
/sites-enabled
logic não é usado pelo pacote upstream do nginx em http://nginx.org/packages/ .Em ambos os casos, ambos são implementados como uma convenção de configuração com a ajuda da
include
diretiva padrão no/etc/nginx/nginx.conf
.Aqui está um trecho de
/etc/nginx/nginx.conf
um pacote oficial upstream do nginx do nginx.org:Aqui está um trecho
/etc/nginx/nginx.conf
do Debian / Ubuntu :Portanto, do ponto de vista do NGINX, a única diferença seria que os arquivos
conf.d
serão processados mais cedo e, como tal, se você tiver configurações que conflitam silenciosamente entre si, as deconf.d
podem ter precedência sobre as do Windowssites-enabled
.As melhores práticas são
conf.d
.Você deve estar usando
/etc/nginx/conf.d
, pois essa é uma convenção padrão e deve funcionar em qualquer lugar.Se você precisar desativar um site, basta renomear o nome do arquivo para não ter mais um
.conf
sufixo, muito fácil, direto e à prova de erros:sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
Ou o contrário para ativar um site:
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
Evite
sites-available
e asites-enabled
todo custo.Não vejo absolutamente nenhuma razão para usar
sites-available
/sites-enabled
:Algumas pessoas mencionaram
nginx_ensite
enginx_dissite
scripts - os nomes desses scripts são ainda piores que o restante deste desastre - mas esses scripts também não são encontrados em nenhum lugar - eles estão ausentes nonginx
pacote, mesmo no Debian (e provavelmente no Ubuntu também) , e também não está presente em um pacote, você realmente precisa de um script de terceiros não padrão para mover e / ou vincular os arquivos entre os dois diretórios ?!E se você não estiver usando os scripts (que é, de fato, uma escolha inteligente, conforme mencionado acima), surge a questão de como você gerencia os sites:
sites-available
parasites-enabled
?sites-enabled
?O exposto acima pode parecer alguns problemas menores a serem resolvidos, até que várias pessoas comecem a gerenciar o sistema ou até que você tome uma decisão rápida, apenas para esquecê-lo meses ou anos depois da linha…
O que nos leva a:
É seguro remover um arquivo
sites-enabled
? É um link suave? Um link rígido? Ou a única cópia da configuração? Um excelente exemplo de configuração infernal.Quais sites foram desativados? (Com
conf.d
, basta fazer uma inversão de busca por arquivos que não terminem com.conf
-find /etc/nginx/conf.d -not -name "*.conf"
ou usegrep -v
.)Não apenas todas as opções acima, mas também observe a
include
diretiva específica usada pelo Debian / Ubuntu -/etc/nginx/sites-enabled/*
- nenhum sufixo de nome de arquivo é especificadosites-enabled
, ao contrário deconf.d
./etc/nginx/sites-enabled
eemacs
criar um arquivo de backup comodefault~
, então, de repente, você terá os doisdefault
e osdefault~
incluirá como configuração ativa, que, dependendo das diretrizes usadas, pode nem fornecer quaisquer avisos e causar uma sessão de depuração prolongada. (Sim, aconteceu comigo; foi durante um hackathon e fiquei totalmente intrigado com o motivo de minha confissão não estar funcionando.)Assim, estou convencido de que
sites-enabled
é puro mal!fonte
sites-enabled
era suficientemente mau!sites-enabled
, mas outra pessoa decide desativá-lo, excluindo-o, possivelmente pensando que seja apenas um link simbólico, exigindo um despejo de memória subsequente do nginx heap para recuperar o arquivo conf: stackoverflow.com/q/45852224/1122270sites-available
esites-enabled
; é importante poder preparar arquivos de configuração fora do diretório de recebimento 'live', de modo que, se o nginx fosse recarregado ou reiniciado, ele não pegaria arquivos de configuração parciais. Também pode ser útil manter os arquivos de configuração que não estão mais em uso ativo. Criar links simbólicos não é uma tarefa particularmente difícil se você tiver experiência suficiente para gerenciar o nginx em primeiro lugar, o IMO.USR1
, que reabre os logs, não recarrega o arquivo conf.) Acho que os comentários da "experiência" do link simbólico foram mal direcionados - o problema é uma questão de consistência, que pouco tem a ver com a experiência.