2011-01-27 34 views
2

我正在進入django項目的生產模式,但遇到了一個特殊的問題。我通過apahce + mod_wsgi運行我的django並通過nginx提供靜態文件。django在apache和nginx上都提供媒體文件

但是我的情況要求我無法爲nginx提供「全部」靜態文件。有必要僅從apache提供「open-flash-chart.swf」。該項目使用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; 
} 
} 
+0

發佈您的網站的的nginx的conf。配置可能會非常不同 – Louis 2011-01-27 22:39:20

回答

2

在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" /> 
-1

你需要改變nginx的配置來處理

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

與Apache,相同的方式,這樣做是爲了/(根)

+0

open-flash-chart應該從Apache運行。其餘的文件將由nginx處理。 – Neo 2011-01-27 22:00:28