Domanda

Io vado in modalità di produzione per il mio progetto Django, ma in esecuzione in un problema particolare. Sto correndo il mio Django attraverso apahce + mod_wsgi e servire i file statici tramite nginx.

Tuttavia la mia situazione richiede che non posso servire "tutti" i file statici da nginx. V'è la necessità di servire solo "open-flash-chart.swf" da apache. Gli usi del progetto openpyc e incorpora aperto-flash-chart.swf, che deve essere eseguito sullo stesso server come Django, che nel mio caso è Apache. Come posso fare questo? Cosa cambia per ho bisogno di fare in file di configurazione di 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;
}
}
È stato utile?

Soluzione

In Apache, istituito un alias nel host virtuale per servire direttamente questo file:

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

Poi, invece di utilizzare {{ MEDIA_URL }} fare riferimento al file, il codice nel percorso assoluto:

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

Nginx sarà ancora procura la richiesta (perché non è il vostro percorso della carta), e poi Apache consegnerà il file indietro nginx.

In alternativa, e non è raccomandato, ma se deve andare direttamente da Apache al browser, si potrebbe specificare la porta:

<object data="http://servername:8080/url/to/open-flash-chart.swf" />

Altri suggerimenti

È necessario modificare nginx config al manico

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

con apache, allo stesso modo l'avete fatto a / (root)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top