2011-04-05 54 views
3

这是nginx的我的“内部”的设置:Nginx的:X-加速重定向内部不工作

location /issues/ { 
    root /home/some_user/some_project/; 
    internal; 
} 

当我注释掉“内部”的一部分,Nginx的服务于文件中的“问题”文件夹中并在其中的文件就好了。但是,即使当它启用我仍然无法从Python或PHP代码提供任何文件:

# Python, outputs an empty zip   
import os 
file_name = '12.pdf.zip' 
response = HttpResponse() 
response['Content-Disposition'] = 'attachment; filename=%s' % t_str(file_name) 
response['Content-Length'] = os.path.getsize(file_path) 
response['Content-Type'] = "application/zip" 
response['X-Accel-Redirect'] = '12.pdf.zip' 
return response 

# PHP, does nothing 
header("X-Accel-Redirect: 12.pdf.zip"); 

这些都是/ default和nginx.conf启用的站点 - 。 8000是为Django和81是为PHP

server { 

    listen 80; ## listen for ipv4 

    server_name localhost; 

    access_log /var/log/nginx/localhost.access.log; 

    location/{ 
     # proxy/requests to apache running django on port 8081 
     proxy_pass   http://127.0.0.1:8000/; 
     proxy_redirect  off; 

     proxy_set_header Host    $host; 
     proxy_set_header X-Real-IP  $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_max_temp_file_size 0; 

     client_max_body_size  10m; 
     client_body_buffer_size 128k; 

     proxy_connect_timeout  90; 
     proxy_send_timeout   90; 
     proxy_read_timeout   90; 

     proxy_buffer_size   4k; 
     proxy_buffers    4 32k; 
     proxy_busy_buffers_size 64k; 
     proxy_temp_file_write_size 64k; 

    } 

    location /issues/ { 
     root /home/some_user/some_project/; 
     internal; 
    } 
} 

worker_processes 1; 

error_log /var/log/nginx/error.log; 
pid  /var/run/nginx.pid; 

events { 
    worker_connections 1024; 
    # multi_accept on; 
} 

http { 
# include  /etc/nginx/mime.types; 

    access_log /var/log/nginx/access.log; 

    sendfile  on; 
    #tcp_nopush  on; 

    #keepalive_timeout 0; 
    keepalive_timeout 65; 
    tcp_nodelay  on; 

    gzip on; 
    gzip_disable "MSIE [1-6]\.(?!.*SV1)"; 

    proxy_redirect  off; 

    proxy_set_header Host    $host; 
    proxy_set_header X-Real-IP  $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_max_temp_file_size 0; 

    proxy_connect_timeout  90; 
    proxy_send_timeout   90; 
    proxy_read_timeout   90; 

    proxy_buffer_size   4k; 
    proxy_buffers    4 32k; 
    proxy_busy_buffers_size 64k; 
    proxy_temp_file_write_size 64k; 

    include    /etc/nginx/sites-enabled/*; 

} 

我试着改变Nginx配置为别名,同样的事情。并尝试了所有可能的文件路径。任何人都可以看到有什么不对?或者给我一些指点?谢谢。

回答

4

我不知道为什么我不能让它工作之前。也许Nginx Wiki文档是错误的?这是我如何解决它:

在nginx的/网站可用/默认:

location /issues { 
     root /home/ubuntu; 
     internal; 
    } 

在views.py:

file_name = 'some.zip' 
url = '/issues/' + file_name 
response = HttpResponse() 
response['Content-Type'] = "" 
response['X-Accel-Redirect'] = url 
return response 

而且完整路径的档案文件是: /home/ubuntu/issues/some.zip

1
header("X-Accel-Redirect: /issues/12.pdf.zip"); 

而且12.pdf.zip必须位于在/ home/some_user/some_project /问题/

+0

谢谢,但我也尝试过。 – Asdf 2011-04-05 12:02:37