Preciso veicular meu aplicativo através do servidor de aplicativos em 8080
e meus arquivos estáticos de um diretório sem tocar no servidor de aplicativos. A configuração nginx que eu tenho é algo como isto ...
# app server on port 8080
# nginx listens on port 8123
server {
listen 8123;
access_log off;
location /static/ {
# root /var/www/app/static/;
alias /var/www/app/static/;
autoindex off;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Agora, com esta configuração, tudo está funcionando bem. Observe que a root
diretiva está comentada.
Se eu ativar root
e desativar o alias
- ele pára de funcionar. No entanto, quando eu remover o arrasto /static/
do root
que começa a trabalhar novamente.
Alguém pode explicar o que está acontecendo. Explique também de forma clara e verbal quais são as diferenças entre root
e alias
e seus propósitos.
log_format scripts '$document_root | $uri | > $request';
emhttp
seção eaccess_log /var/log/nginx/scripts.log scripts;
naserver
seção do nginx configuração ..nginx: [emerg] invalid number of arguments in "alias" directive
, recebi , e o servidor caiu durante o reinício.como dizem que @treecoder
Uma imagem vale mais que mil palavras
para
root
:para
alias
:fonte
No seu caso, você pode usar a
root
diretiva, porque$uri
parte dalocation
diretiva é a mesma da últimaroot
parte da diretiva.e
root
diretiva serão anexados$uri
ao caminho.fonte
Apenas um adendo rápido à resposta muito útil do @ good_computer, eu queria substituir a raiz do URL por uma pasta, mas apenas se correspondesse a uma subpasta contendo arquivos estáticos (que eu queria manter como parte do caminho).
Por exemplo, se o arquivo solicitado estiver em
/app/js
ou/app/css
, procure/app/location/public/[that folder]
.Eu fiz isso funcionar usando um regex.
fonte
alias
é usado para substituir o local da peça (LPP) no caminho da solicitação, enquanto oroot
é usado para ser anexado ao caminho da solicitação.São duas maneiras de mapear o caminho da solicitação para o caminho final do arquivo.
alias
só poderia ser usado no bloco de localização e substituirá a parte externaroot
.alias
eroot
não pode ser usado no bloco de localização juntos.fonte
Bloco de servidor para viver a página estática no nginx.
fonte
Em outras palavras, para manter este resumo: no caso de
root
, o argumento de localização especificado faz parte do caminho e do URI do sistema de arquivos . Por outro lado - oalias
argumento diretivo da declaração de localização faz parte apenas da URIPortanto,
alias
é um nome diferente que mapeia determinado URI para determinado caminho no sistema de arquivos, enquantoroot
anexa o argumento de localização ao caminho raiz fornecido como argumento para aroot
diretiva.fonte