django обслуживает мультимедийные файлы на apache и nginx - PullRequest
2 голосов
/ 28 января 2011

Я перехожу в производственный режим для моего проекта django, но сталкиваюсь со специфической проблемой.Я запускаю свой django через apahce + mod_wsgi и обслуживаю статические файлы через nginx.

Однако моя ситуация требует, чтобы я не мог обслуживать «все» статические файлы из nginx.Существует необходимость обслуживать только "open-flash-chart.swf" из apache.Проект использует openpyc и встраивает open-flash-chart.swf, который должен работать на том же сервере, что и django, в моем случае это Apache.Как я могу это сделать?Какие изменения мне нужно внести в конфигурационные файлы Apache?

server {
listen   80 default;
server_name  localhost;

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

location / {
    proxy_pass http://localhost:8080;
    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;
    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 /media/ {
    root /srv/www/enpass/;
    expires max;
}
}

Ответы [ 2 ]

2 голосов
/ 28 января 2011

В Apache установите псевдоним на вашем виртуальном хосте для непосредственной обработки этого файла:

Alias /url/to/open-flash-chart.swf /full/path/to/open-flash-chart.swf

Затем, вместо использования {{ MEDIA_URL }} для ссылки на файл, код в абсолютном пути:

<object data="/url/to/open-flash-chart.swf" />

Nginx по-прежнему будет прокси-запрос (потому что это не ваш медиа-путь), а затем Apache доставит файл обратно в nginx.

В качестве альтернативы и не рекомендуется, но если он должен идтипрямо из Apache в браузер вы можете указать порт:

<object data="http://servername:8080/url/to/open-flash-chart.swf" />
0 голосов
/ 28 января 2011

Вам нужно изменить конфигурацию nginx для обработки

/path/to/open-flash-chart.swf 

с Apache, так же, как вы сделали это для / (root)

...