Перенаправление Django, Gunicorn, Nginx на локальный хост

#python #django #ubuntu #nginx #gunicorn

#питон #джанго #ubuntu #nginx #пушечный корн

Вопрос:

Я пытаюсь настроить рабочий сервер с помощью gunicorn и nginx для своего приложения Django.

В настоящее время у меня работает gunicorn, но когда я делаю завиток на своем локальном хосте, я не получаю выходных данных, поэтому я думаю, что проблема в моих URL-адресах/представлениях Django, но я не уверен, что нужно изменить, так как я нигде не ссылаюсь на локальный хост. У меня также работает nginx. Я не использую файл nginx.conf напрямую, так как я создал символическую ссылку и использую сайт с поддержкой. Вот конфигурация, доступная для моих сайтов:

 # /etc/nginx/sites-availible/msc_project.conf  # HTTP to HTTPS redirect:  server {    listen 0.0.0.0:80;  server_name mscentral.mysite.com;    # Certbot Letsencrypt verification  location /.well-known/acme-challenge {  alias /home/mscentral/mscentral_project/static/.well-known/acme-challenge/; #   }     return 301 https://mscentral.mysite.com$request_uri;  }   # Virtual host for mscentral server {  listen 0.0.0.0:443 ssl;  server_name mscentral.mysite.com;  ssl_certificate /etc/letsencrypt/live/mscentral.mysite.com/fullchain.pem;  ssl_certificate_key /etc/letsencrypt/live/mscentral.mysite.com/privkey.pem;    #static file handling  location /static/ {  alias /home/mscentral/mscentral_project/static/;  }    location /media/ {  alias /home/mscentral/mscentral_project/media/;  }    #WSGI server  location / {  proxy_set_header X-Real-IP $remote_addr;  proxy_pass http://localhost:8000/;  }    access_log /var/log/nginx/mscentral_project-access.log;  error_log /var/log/nginx/mscentral_project-error.log;      }   

вот мой служебный файл gunicorn:

 [Unit] Description=My Central Service for Gunicron After=network.target  [Service] Type=simple # Another Type: forking User=mscentral_internal WorkingDirectory=/home/mscentral/mscentral_project ExecStart=/home/mscentral/venv/bin/gunicorn -b localhost:8000 mscentral_project.wsgi Restart=on-failure # Other restart options: always, on-abort, etc  # The install section is needed to use # `systemctl enable` to start on boot # For a user service that you want to enable # and start automatically, use `default.target` # For system level services, use `multi-user.target` [Install] WantedBy=multi-user.target  

Это мой файл URL-адресов:

 from django.conf.urls import url, include from django.urls import path from ms_app import views from django.conf import settings from django.conf.urls.static import static  urlpatterns = [  # path('oauth2/', include('django_auth_adfs.urls')),  path('',views.index,name='index'),  path('ms_app/',include('ms_app.urls', namespace='ms_app')),  path('admin/', admin.site.urls),  path('logout/',views.user_logout,name='logout'),  path('special/',views.special,name='special'),  # path('accounts/profile/', views.index),   ]  static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)  # if settings.DEBUG: # urlpatterns  = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)   

и на данный момент у меня есть базовая индексная страница:

 def index(request):  return render(request, 'ms_app/index.html')  

Вот мои РАЗРЕШЕННЫЕ ХОСТЫ в файле настроек:

 ALLOWED_HOSTS = ["mscentral.mysite.com","localhost"]  

Когда я удаляю localhost из своих разрешенных хостов, я получаю следующую ошибку Django: Ошибка запрещенных хостов Django

И когда я сохраняю localhost в своих РАЗРЕШЕННЫХ хостах, затем полное доменное имя mysite, тогда я перенаправляюсь на localhost.

Это моя первая попытка такого рода развертывания. Пожалуйста, любые и все советы/советы/ресурсы будут оценены по достоинству.

Мое приложение Django находится в виртуальной среде, Используя Django: 3.2.5, Gunicorn: 20.1.0, Python: 3.8.10, Виртуализация: vmware, Операционная система: Ubuntu 20.04.3 LTS, Ядро: Linux 5.4.0-91-generic, Архитектура: x86-64, версия nginx: nginx/1.18.0

Спасибо.

Комментарии:

1. Я добавил эту строку в свой конфигурационный файл nginx: proxy_set_header X-Forwarded-Proto $scheme; и это, похоже, устранило проблему