403 Proibido servir arquivos estáticos a partir da pasta compartilhada do VirtualBox com o nginx (convidado do Ubuntu 10.04LTS, host do Windows 7)

1

Estou trabalhando em uma VM de desenvolvimento local e tentando testar a exibição de meu site com gunicorn e nginx como um proxy reverso somente para recursos estáticos. O site carrega menos recursos estáticos com user nginx; em nginx.conf. A tentativa de carregar um recurso estático individualmente revela um erro 403 Proibido.

Para o fundo. Os recursos estáticos estão em uma pasta compartilhada em /media/sf_work . Todos os arquivos são de propriedade de root:vboxsf (padrão do VirtualBox). Minha conta de usuário no sistema foi adicionada ao grupo vboxsf e tenho acesso total à pasta compartilhada.

Para comparação, tentei mudar o usuário nginx.conf para minha conta de usuário. Nesse cenário, os arquivos estáticos foram carregados, mas a própria página inicial dá um erro 403 Proibido. Então, eu tentei adicionar o usuário nginx ao grupo vboxsf , mas depois tudo deu um erro 403 Proibido. Após uma investigação mais aprofundada, parece que se o usuário nginx.conf estiver em qualquer grupo , isso resultará em 403 Forbidden.

Alguma ideia do que poderia estar acontecendo aqui?

UPDATE

Assim, o problema com a página inicial retornando 403 Forbidden ao usar minha conta de usuário como o usuário nginx (a única maneira que os arquivos estáticos funcionam) está relacionado a nenhum arquivo index.html estar no diretório (listagem de diretório negada). No entanto, eu obviamente não quero listar o diretório; deveria passar este pedido para o proxy do gunicorn. Eu estou usando o seguinte:

location / {
    try_files $uri $uri/ @proxy
}
location @proxy {
    proxy_pass_header Server;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Scheme $scheme;
    proxy_connect_timeout 10;
    proxy_read_timeout 10;
    proxy_pass http://127.0.0.1:8080;
}

Há algo de errado com isso?

    
por Chris Pratt 21.03.2012 / 18:29

1 resposta

2

Então, finalmente resolvi. Primeiro, o usuário nginx.conf deve ter acesso à pasta compartilhada, obviamente, o que significa que eu tive que usar minha conta de usuário. Eu não estou feliz com isso, mas isso é apenas uma caixa de desenvolvimento, então a segurança não é uma preocupação.

Em seguida, ocorreu um problema com minha diretiva try_files . Em retrospecto, faz todo o sentido. Estou solicitando / e esse diretório realmente existe, mas não quero essa correspondência. Então, o que eu realmente precisava era:

try_files $uri @proxy

Então, tudo funcionou bem.

    
por 21.03.2012 / 19:39