Você deve usar root
:
location /protected/ {
internal;
root /home/user;
}
em vez de seu alias
:
location /protected/ {
internal;
alias /home/user/protected;
}
Obtendo um erro "403 negado acesso" em vez de um arquivo de serviço (usando django, gunicorn nginx)
Eu estou tentando usar o nginx para servir arquivos privados do django. Para as configurações do X-Access-Redirect eu segui o seguinte guia
Aqui está o meu arquivo de configuração do site (/ etc / nginx / site-available / sitename):
server {
listen 80;
listen 443 default_server ssl;
server_name localhost;
client_max_body_size 50M;
ssl_certificate /home/user/site.crt;
ssl_certificate_key /home/user/site.key;
access_log /home/user/nginx/access.log;
error_log /home/user/nginx/error.log;
location / {
access_log /home/user/gunicorn/access.log;
error_log /home/user/gunicorn/error.log;
alias /path_to/app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://127.0.0.1:8000;
proxy_connect_timeout 100s;
proxy_send_timeout 100s;
proxy_read_timeout 100s;
}
location /protected/ {
internal;
alias /home/user/protected;
}
}
Eu tentei usar o seguinte na minha visualização do django para testar o download:
response = HttpResponse()
response['Content-Type'] = "application/zip"
response['X-Accel-Redirect'] = '/protected/test.zip'
return response
mas em vez do download do arquivo eu recebo:
Proibido 403 nginx / 1.1.19
Por favor note: Eu removi todos os dados pessoais do arquivo de configuração, então se houver algum erro óbvio não relacionado ao meu erro é provavelmente por isso.
Meu log de erros do nginx me fornece o seguinte:
**2012/09/18 13:44:36 [error] 23705#0: *44 directory index of "/home/user/protected/" is forbidden, client: 80.221.147.225, server: localhost, request: "GET /icbdazzled/tmpdir/ HTTP/1.1", host: "www.icb.fi"**