Комментарий пользователя
Привет! Запустил Gunicorn над джангой — хочу поднять nginx и настроить редирект с домена на 80-й порт с выводом страницы exceptions/404.html, если пользователь перешел по несуществующему пути.
Ответ специалиста
Добрый день, Александр. Ваша задача сводится к нескольким этапам.
1. Проверьте, чтобы в настройках основного приложения проекта ваш домен был добавлен в список ALLOWED_HOSTS. Тут же можно указать представление для ошибки 404 — все как в тестовой среде. Ну и не забудьте перед выходом в продакшен указать DEBUG=False.
2. Если ваш Gunicorn уже перенаправляет запросы на Django, пропустите этот шаг. В противном случае — прочитайте эту инструкцию.
3. Наконец, установите nginx, перейдите в каталог с конфигурацией и откройте ее:
apt install nginx
nano /etc/nginx/sites-available/testproject
4. Возьмите на шаблон эту конфигурацию и адаптируйте:
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
client_max_body_size 100M;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 404 /exceptions/404.html;
}
5. Проверьте конфигурацию nginx и перезапустите его:
sudo nginx -t
sudo systemctl reload nginx
Все должно работать. По схема пользователь обращается к домену, nginx проксирует запрос на Gunicorn, если пути не существует, Django возвращает страницу с исключением, а nginx показывает ее.