Проблема, с которой вы столкнулись, связана с поведением Nginx при обработке переадресаций (редиректов) и ошибок. Давайте разберемся подробнее.
### Как работает редирект в Nginx
Когда вы настраиваете Nginx для выполнения редиректа с HTTP на HTTPS, это обычно делается с использованием директивы `rewrite` или блоков `server`, которые получают запросы на порт 80 (HTTP) и возвращают ответ с кодом 301 (постоянный редирект) на соответствующий URL на порт 443 (HTTPS).
### Почему вы видите только 301 ошибки
1. **Поведение с редиректом:** Когда бот или пользователь пытается получить доступ к несуществующему ресурсу через HTTP, Nginx обрабатывает этот запрос и выполняет 301 редирект на соответствующий URL на HTTPS. Этот редирект будет зафиксирован в логах как 301.
2. **Нет прямого доступа к 404:** Если после редиректа на HTTPS тот же самый запрос (URL) все еще не существует, то Nginx сначала регистрирует 301 на HTTP, а потом редиректит на HTTPS и возвращает 404 на новом URL. Однако, если запрос происходит слишком быстро (например, от ботов), то вы можете не увидеть запись 404 для HTTPS, так как Nginx может либо не записывать ее, либо вы не настраиваете логгирование ошибок корректно.
3. **Настройки логирования:** Возможно, настройки для логирования в вашем конфигурационном файле Nginx отличаются для 404 и 301 статусов. Например, вы можете учитывать только определенные статусы в доступных логах.
4. **Кэширование:** Если у вас настроено кэширование или прокси (например, с использованием `proxy_cache`), это может также влиять на результаты, и ошибки 404 могут игнорироваться или регистрация их может временно замедляться.
### Рекомендации
- **Проверьте конфигурацию:** Просмотрите конфигурацию Nginx на предмет записей логов. Убедитесь, что вы регистрируете как `access_log`, так и `error_log` для всех нужных вам статусов.
- **Убедитесь, что редирект работает корректно:** Проверьте, что редирект HTTP на HTTPS полностью выполняется и что 404 ошибки верно регистрируются.
- **Анализируйте поведение ботов:** Если боты отправляют запросы слишком быстро или они повторяют запросы слишком часто без ожидаемой некоторые временные промежутки, это также может привести к отсутствию соответствующих записей. Вы можете использовать механизмы ограничения частоты (rate limiting), чтобы избежать этого.
Пока у вас зафиксированы только 301 ошибки от ботов на 404 ошибок, то вам следует внимательно следить и анализировать логи и конфигурацию для выявления причин такого поведения.