Nginx: serve arquivos estáticos fora de um determinado diretório - um nível muito profundo

12

Sou bem novo nas configurações do nginx. Estou tendo alguma dificuldade com um problema bem básico. Eu gostaria de hospedar alguns arquivos estáticos em / doc (index.html, algumas imagens, etc). Os arquivos estão localizados em um diretório chamado / sites / mysite / proj / doc /.

O problema é que, com a configuração nginx abaixo, o nginx tenta procurar um diretório chamado "/ sites / mysite / proj / doc / doc". Talvez isso possa ser corrigido definindo a raiz como / sites / mysite / proj /, mas não quero expor outros ativos (não estáticos) no diretório proj /. E por várias razões, não consigo mover o diretório doc / de onde ele está.

Eu acho que existe uma maneira de usar uma regra de Reescrita para resolver esta situação, mas eu realmente não entendo todas as partes, então tenho dificuldade em formular a regra.

rewrite ^/doc/(.*)$ /$1 permanent;

Eu também incluí um exemplo de hospedagem de arquivos de um diretório / sites / mysite / htdocs / static /.

> vim locations.conf

location /static {
    root   /sites/mysite/htdocs/;
    access_log   off;
    autoindex  on;
}

location /doc {
    root   /sites/mysite/proj/doc/;
    access_log   on;
    autoindex  on;
}


2011/11/19 23:49:00 [error] 2314#0: *42 open() "/sites/mysite/proj/doc/doc" failed (2: No such file or directory), client: 100.100.100.100, server: , request: "GET /doc HTTP/1.1", host: "myhost.com"

Alguém tem alguma ideia de como eu posso servir esse conteúdo estático?

    
por Joe J 20.11.2011 / 01:33

1 resposta

19

Você pode usar o alias, assim:

location /doc {
    alias   /sites/mysite/proj/doc/;
}

link

    
por 02.04.2012 / 14:07