/ / Konfigurácia pre Django, Apache a Nginx - django, apache, nginx, mod-wsgi

Konfigurácia pre Django, Apache a Nginx - django, apache, nginx, mod-wsgi

Svoju aplikáciu Django som nastavil na serveri Apache + mod_wsgi. Aby som mohol obsluhovať statické súbory, používam Nginx, ako sa navrhuje na webovej stránke projektu Django. http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/

Apache beží na porte 8081 a nginx je zapnutýport 80. Teraz niektorí ľudia navrhli, že moja konfigurácia je nesprávna a mal by som zvrátiť úlohy Apache a Nginx. Nie som si istý, prečo by to malo byť. A ak je moja konfigurácia skutočne nesprávna, prečo by webová stránka django navrhovala nesprávnu metódu?

odpovede:

12 pre odpoveď č. 1

Dokumenty django, s ktorými ste prepojení, vás nenavrhujúpoužiť apache ako reverzný proxy. Jednoducho navrhujú, aby ste používali samostatný webový server, takže by som povedal, že dokumenty nie sú jasné o tejto téme - nič nenavrhujú zle.

Moja počiatočná odpoveď bola za predpokladu, že ste nginx používali ako reverzný proxy server, pretože port 80 je port HTTP, ktorý sa používa, keď sa prehliadač pokúša prejsť na webovú adresu bez zadaného portu.

Existuje mnoho kompletných sprievodcov, ako nastaviť nginx + apache pomocou rýchleho vyhľadávania na google, ale tu je podstata nastavenia nginx:

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

location /media/ {
# serve static media directly from nginx
root   /srv/anuva_project/www/;
expires 30d;
break;
}

Všetko, čo musíte urobiť, je odstrániť proxy linky z vašej konfigurácie apache a namiesto toho pridať proxy vyhlásenia do vášho nginx.conf.

Ak chcete svoje stránky skutočne obsluhovať z portu 8081, mohli by ste mať nginx počúvať na porte 8081 a apache počúvať na inom porte.

Ide o to, že apache sedí v nejakom nejasnom porte, slúži iba na doručovanie žiadostí poslaných z nginx, zatiaľ čo obsluha statických súborov je vykonávaná pomocou nginx.