Я получаю сообщение об ошибке Invalid Host header от своего сервера и не знаю, как с этим справиться.
URL-адрес запроса ошибок https://127.0.0.1:8000 и очевидное предложение состоит в том, чтобы добавить localhost к моим (использующим django) РАЗРЕШЕННЫМ хостам. Однако я читал, что сохранение локального хоста в разрешенных хостах в производстве - это плохая практика и потенциальная брешь в безопасности. На данный момент мои разрешенные хосты в prod ограничены моим зарегистрированным доменом.
Я немного покопался, кажется, что эти запросы исходят от сканеров IP-портов. В отчете по электронной почте я иногда вижу ссылки GitHub в HTTP_USER_AGENT на такие репозитории сканера. А HTTP_X_FORWARDED_FOR почти всегда либо какой-то VPN-провайдер, либо находится в Москве или Пекине.
Вот моя текущая конфигурация nginx. Я реализовал несколько предложений из других сообщений, таких как пользовательская фильтрация регулярных выражений, но, похоже, это не дало эффекта.
Помимо этой проблемы, все остальное, кажется, работает как задумано. Любая помощь будет принята с благодарностью. Впервые настраиваю что-то подобное, поэтому, пожалуйста, укажите на очевидные ошибки.
# Файл: /etc/nginx/sites-available/app
server_tokens отключены;
журнал_доступа /var/log/nginx/app.access.log;
error_log /var/log/nginx/app.error.log;
сервер {
слушать 80 default_server;
вернуть 444;
}
сервер {
имя_сервера app.example.com;
слушать 80;
вернуть 301 https://$host$request_uri;
}
сервер {
# Пользовательское регулярное выражение if для 444 любого неожиданного заголовка хоста
если ( $хост !~* ^(app.example.com|example.com)$ ) {
вернуть 444;
}
местоположение/статический {
включен автоиндекс;
псевдоним /path/to/django/staticfiles;
}
# Передача запросов на прослушивание guinicorn на http://localhost:8000
место расположения / {
proxy_pass http://localhost:8000;
включить /etc/nginx/proxy_params;
прокси_перенаправление выключено;
}
слушать 443 ssl;
имя_сервера app.example.com;
ssl_certificate /путь/к/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ШИФР;
}