#django #nginx
Вопрос:
У меня есть сервер AWS, работающий на Nginx, на котором размещено приложение React, отлично работающее на сервере. Теперь я хочу, чтобы приложение Django для restframework было доступно на том же сервере.
Я следую документу и загружаю приложение Django на сервер и пытаюсь запустить приложение, попробовав python3 manage.py runserver 0.0.0.0:8000
. Ошибки нет, но я не могу получить доступ к своему ip http://server_domain_or_IP:8000
-адресу .
Конфигурация Nginx в /etc/nginx/conf.d/example.org.conf
server {
listen 80 default_server;
server_name example.org;
return 301 https://example.org;
}
server {
listen 443 ssl;
server_name example.org;
ssl_certificate /etc/nginx/ssl/ssl_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/example.key;
location / {
root /home/ubuntu/example/build;
index index.html index.htm;
}
}
Пожалуйста, помогите, где я ошибаюсь?
Комментарии:
1. покажите свою настройку nginx.
2. Привет @RanuVijay, Добавлена конфигурация Nginx
3. Надеюсь example.org является заполнителем, а не фактическим доменным именем, в противном случае, очевидно, проблема в том, что оно не указывает на ваш зарегистрированный домен. Также брандмауэры, закрытые порты, настройки DNS и т. Д. и т. Д. И т. Д…
4. Да example.org это только для демонстрационных целей. Я сделал настройки, касающиеся моего живого домена
Ответ №1:
Таким образом, ваш Django работает на локальном хосте:8000, и в настройках Nginx вы не пересылаете свой запрос на этот адрес. Вы должны сопоставить запрос домена с вашим запущенным сервером Django, в рабочей среде у вас должно быть что-то вроде Gunicorn
Попробуйте с —
upstream backend {
server localhost:8000;
}
server {
server_name example.com www.example.com;
location / {
include proxy_params;
proxy_pass http://backend;
}
это будет работать для не-https. Вы можете добавить протокол listen 443 ssl и SSL-сертификаты, чтобы ваш сервер блокировал прослушивание только HTTPS.