/ / Nginx и Gunicorn 502 - питън, джанго, nginx, гнунор

Nginx и Gunicorn 502 - питън, джанго, nginx, гнунор

Разгръщам приложение на сървър, но изглежда, че не разбирам някои основни понятия тук. Проблемът е, че използвам gunicorn с порт 8001

gunicorn myproj.wsgi:application --bind XXX.XXX.XXX.XXX:8001

Nginx обаче слуша порт 8000, както можете да видите в / etc / nginx / sites-available / myproj:

server {
listen 8000;
server_name XXX.XXX.XXX.XXX;

access_log off;

location /static/ {
root /opt/myproj;
}

location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3p "CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"";
}
}

Ето какво се случва:

Когато влизам в XXX.XXX.XXX.XXXX: 8001, получавам страницата си, но без никакви статични файлове. Мога да получа достъп до статичните файлове от XXX.XXX.XXX.XXX:8000/static/css/mycss.css. Въпреки това, когато влизам в XXX.XXX.XXX.XXX:8000, получавам 502 - Bad Gateway грешка.

Какво съм неразбиране тук? Как мога да получа достъп до страницата си със статичните файлове?

Отговори:

2 за отговор № 1

Вашият проблем се случва, защото сте обвързващиgunicorn към вашия външен ip, но nginx препраща към пристанището localhost. Въпросът е, че глунорът изобщо не би трябвало да е достъпен за външната среда; всички заявки трябва да преминат през nginx обратната прокси.

Свържете gunicorn до 127.0.0.1:8001.


1 за отговор № 2

Основната схема при използване на сървъри за приложения, като gunicorn е:

[Уеб браузър на потребителя] <-> [Уеб сървър (Nginx)] <-> [Сървър на приложения (Gunicorn)]

Уеб сървърът обикновено слуша на публичния IP адресадрес на порт 80 и след това препраща връзката към сървъра на приложения, служейки като обратна прокси сървър. Ако стартирате сървър на приложения и уеб сървър на един и същ хост, той е общ за свързване на "localhost" (IP: 127.0.0.1) и същия порт, т.е. 8001 във вашия случай. посочени в конфигурацията ви Nginx.

Забележка: В случай, че два сървъра се изпълняват на една машина, обикновено си струва да ги свържете чрез UNIX контакти, вместо с мрежови контакти, поради причини, свързани с производителността.