У меня есть настройка приложения на Elasti c Beanstalk (с автоматическим масштабированием балансировки нагрузки) с использованием Django. В конфигурации также используются apache httpd и mod_wsgi.
Приложение работает правильно, но иногда я вижу ошибку, которую я не могу отладить. Это происходит из-за того, что сама ошибка не появляется ни в какой точке error_log.
Пример из журнала доступа (IP-адреса пропущены):
[15/Apr/2020:01:13:21 +0000] "GET /reroute/agument/ HTTP/1.1" 500 27 "-" ""
[15/Apr/2020:01:13:22 +0000] "GET /reroute/argument/ HTTP/1.1" 302 - "https://www.bing.com/" "Mozilla/5.0 (Linux; Android 4.4.3; KFSOWI) AppleWebKit/537.36 (KHTML, like Gecko) Silk/80.5.3 like Chrome/80.0.3987.162 Safari/537.36"
В верхнем запросе отображается ошибка запрос, внизу типичный запрос. Главное, что я здесь заметил, это отсутствие пользовательского агента в запросе 500. Проходя через access_log, в каждом отдельном запросе этого типа отсутствует пользовательский агент. У меня нет определенной c настройки функциональности для предотвращения ботов / пауков и т. П.
Эти 500 ошибок происходят случайным образом и повторяются в течение последних нескольких месяцев. Не было сообщений о том, что это произошло с конечным пользователем, что заставляет меня поверить в две возможности:
- Неправильный хост, не указанный в параметре Django ALLOWED_HOSTS, используется кем-то.
- Каким-то образом бот / паук отклоняется.
Я действительно хочу идентифицировать и остановить эти ошибочные запросы, так как это влияет на отчеты об ошибках для самого приложения. Как лучше всего определить проблему здесь?
Единственная функциональность, которую я добавил в свою среду beanstalk (через .ebextensions):
- Перенаправление запросов Http на Https
- Некоторые Django команды для запуска при запуске