#django #nginx #subdomain #gunicorn
#django #nginx #поддомен #gunicorn
Вопрос:
я пытаюсь настроить django на nginx gunicorn на сервере centos6 (брандмауэр выключен, selinux отключен). проект работает локально на сервере (протестировано под управлением gunicorn на 127.0.0.1: 8221), но не во всей сети. проект должен быть доступен из поддомена project.mydomain.com
сам проект находится на сервере centos6.mydomain.com и dns-сервер является main.mydomain.com
мой ngnix conf для проекта:
upstream project {
server 127.0.0.1:8221 fail_timeout=0;
}
server {
listen 80;
server_name project.mydomain.com;
access_log /var/log/nginx/project.mydomain.com.log;
error_log /var/log/nginx/project.mydomain.com.log;
root /home/USER/djangosites/project;
location / {
proxy_set_header Host $host;
if (!-f $request_filename){
proxy_pass http://project;
break;
}
}
location /media {
alias /home/USER/djangosites/project/media;
}
location /static {
alias /home/USER/djangosites/project/static;
}
}
nginx conf для centos6 (работает)
server {
listen 80 default_server;
server_name centos6.mydomain.com;
access_log /var/log/nginx/centos6.mydomain.com.access.log main;
error_log /var/log/nginx/centos6.mydomain.com.error.log;
location / {
root /var/www/centos6.mydomain.com;
index index.html;
}
}
gunicorn conf
import multiprocessing
bind = "127.0.0.1:8221"
logfile = "/home/USER/djangosites/project/gunicorn.log"
workers = multiprocessing.cpu_count() * 2 1
было бы лучше предоставить новый ip (для внешнего) проекту, который отличается от centos6.mydomain.com или я могу просто использовать один и тот же IP-адрес с другим локальным портом?
как я должен настроить hosts.db на main.mydomain.com тогда?
centos6 A xxx.xxx.xxx.220
project A xxx.xxx.xxx.221
или
centos6 A xxx.xxx.xxx.220
project A xxx.xxx.xxx.220:8221
или
centos6 A xxx.xxx.xxx.220
project CNAME centos6
я более склонен указывать новый IP-адрес, потому что все находится за m0n0wall, поэтому новым IP-адресом, возможно, было бы легче управлять.
итак, в принципе, я предполагаю, что мой nginx conf для проекта имеет недостатки. что мне с этим делать?
Комментарии:
1. почему бы не исключить nginx, сначала указав его на пустой каталог с index.html и посмотрите, служит ли это этому. Как только у вас это заработает, вы поймете, что это проблема gunicorn, а после этого — проблема приложения. Не должно иметь значения, на какой IP-адрес вы заходите, если это IP-адрес машины, на которой работает nginx. Какие ошибки вы видите?
2. @pastylegs поскольку я могу получить доступ к сайту локально (проверено с помощью curl) «curl 127.0.0.1: 8221» , а nginx отлично обслуживает основной статический сайт серверов (см. Мой centos6 nginx conf), я все еще предполагаю, что что-то между nginx и gunicorn перепуталось. это исключает, что gunicorn не сможет запустить мое приложение на 127.0.0.1: 8221 или где-либо еще. итак, приложение работает просто отлично, так что никаких проблем нет. об ошибках … используя curl, я просто получаю «curl: (7) не удалось подключиться к хосту»
3. просто редактирую проекты nginx conf, добавляя восходящий поток
Ответ №1:
ОК. заработало 🙂 hosts.db на main.mydomain.com
project CNAME centos6
gunicorn запустил 127.0.0.1: 8221
и отредактировал nginx conf, как указано выше.
Комментарии:
1. После 3 лет публикации эта проблема все еще очень полезна. Это помогает мне решать те же проблемы, что и ваши.