Я розгортаю програму на сервері, але я, мабуть, не розумію тут деяких основних понять. Проблема в тому, що я використовую 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. Справа в тому, що gunicorn не повинен бути доступним зовні; всі запити повинні пройти через зворотний проксі nginx.
Прив'язують gunicorn до 127.0.0.1:8001.
1 для відповіді № 2
Основною схемою при використанні серверів додатків, наприклад gunicorn, є:
[Веб-браузер користувача] <-> [Веб-сервер (Nginx)] <-> [Сервер додатків (Gunicorn)]
Веб-сервер зазвичай слухає публічний IPадреса на порт 80, а потім перенаправляє з'єднання на сервер додатків, що виступає в якості зворотного проксі. Якщо ви запускаєте сервер прикладних програм і веб-сервер на одному і тому ж хості, то звичайно прив'язувати як до "localhost" (IP: 127.0.0.1), так і до одного порту, тобто 8001 у вашому випадку. вказано у вашій конфігурації Nginx.
Примітка: У випадку, коли на одному комп'ютері працюють два сервери, зазвичай варто підключати їх через сокети Unix замість мережевих сокетів для підвищення продуктивності.