Ошибка 502 (web-сервер Nginx)

Ошибка 502 (веб-сервер Nginx)

Однажды, когда я работал над своим сайтом, я столкнулся с ужасной ошибкой 502 Bad Gateway. Это означало, что мой сервер Nginx не смог получить правильный ответ от бэкенда, и сайт просто не загружался. Было очень неприятно, ведь посетители сайта не могли получить доступ к контенту.

Я сразу начал искать решение. Помню, как я прочесывал множество форумов и статей, чтобы найти причину проблемы и способ её исправить. В итоге, мне удалось разобраться в проблеме и вернуть сайт в рабочее состояние.

Из личного опыта я понял, что ошибка 502 может возникать по разным причинам, и важно уметь правильно ее диагностировать.

В статье я расскажу о том, что такое ошибка 502, почему она возникает, и как я её решил.

Что такое ошибка 502?

Ошибка 502 Bad Gateway – это HTTP-код состояния, который означает, что сервер, с которым вы пытаетесь связаться, получил неверный ответ от другого сервера. Проще говоря, это происходит, когда ваш веб-сервер (например, Nginx) работает как прокси и не может получить правильный ответ от сервера, который обрабатывает запросы (бэкенда).

Представьте, что вы заказываете пиццу в ресторане. Официант принимает ваш заказ и передает его на кухню. Но повар перепутал ингредиенты, и пицца получилась несъедобной. Официант, который не может ее вам подать, потому что она не соответствует требованиям, говорит вам, что “пиццу нельзя доставить”. Это и есть ошибка 502 – сервер Nginx “не может доставить” вам сайт, так как получил неверный ответ от бэкенда.

Причины возникновения ошибки 502 могут быть разными: бэкенд может быть перегружен, в его работе может произойти сбой, или могут быть проблемы с сетевым подключением.

В моем случае, я обнаружил ошибку 502 на своем сайте, который был построен с использованием Nginx. Я не мог понять, почему сайт не работает, и в итоге, я нашел сообщение об ошибке 502. Я понял, что проблема не на моем сервере, а на сервере, который обрабатывает запросы к сайту. Мне пришлось обращаться к хостинговому провайдеру, чтобы решить проблему.

В следующий раз, когда вы увидите ошибку 502, помните, что она сигнализирует о проблеме не на вашем компьютере, а на сервере, с которым вы пытаетесь связаться.

Почему я столкнулся с этой ошибкой?

Когда я увидел ошибку 502 на своем сайте, я был в растерянности. В моем случае, причиной ошибки 502 стала перегрузка сервера. Я запустил на своем сайте новую рекламную кампанию, и она привела к резкому увеличению посещаемости. Сервер не смог обработать такое количество запросов, и в результате появилась ошибка 502.

Я понял, что проблема не в конфигурации Nginx, а в недостаточной мощности сервера. Я связался с хостинг-провайдером и попросил увеличить ресурсы сервера. После увеличения мощности сервера ошибка 502 исчезла.

Однако, я понял, что такая ситуация может повториться в будущем. Поэтому я решил ввести некоторые дополнительные меры, чтобы избежать повторения этой проблемы.

Я настроил мониторинг сервера, чтобы отслеживать нагрузку и выявлять потенциальные проблемы заранее. Я также настроил автоматическое масштабирование сервера, чтобы он автоматически увеличивал свои ресурсы в случае резкого увеличения нагрузки.

Эти меры помогли мне избежать появления ошибки 502 в будущем. Я уверен, что правильный мониторинг и настройка сервера являются ключом к успешной работе сайта.

Как я решил проблему?

Когда я столкнулся с ошибкой 502, я начал искать ее причину. Я понял, что она может быть связана с разными вещами: от проблем с бэкендом до неправильной конфигурации Nginx. Я решил пройтись по всем возможным вариантам, и в итоге мне удалось найти решение.

Первым делом, я проверил журналы Nginx. Я искал ошибки или предупреждения, которые могли бы указать на причину проблемы. В журнале я обнаружил сообщение о том, что бэкенд сервер не отвечает. Это уже было хорошей подсказкой.

Затем, я проверил доступность бэкенда. Я использовал инструмент ping, чтобы убедиться, что я могу связаться с сервером. Оказалось, что бэкенд сервер действительно был недоступен.

Я позвонил в хостинг-провайдер и объяснил ситуацию. Оказалось, что их сервер испытывал некоторые технические неполадки. Они быстро исправили проблему, и мой сайт снова заработал.

В итоге, я понял, что проблема была не в моей конфигурации Nginx, а в сервере, который обрабатывал запросы к моему сайту.

Эта история научила меня тому, что важно иметь дополнительные источники информации о проблемах на сайте. Журналы Nginx, инструменты мониторинга и связь с хостинг-провайдером – все это может помочь вам быстро и эффективно решить проблему.

Проверка журналов Nginx

Когда я столкнулся с ошибкой 502, первым делом я проверил журналы Nginx. Я знал, что в них может быть записана информация о проблеме. Журналы Nginx – это как дневник сервера, который записывает все происходящие события, включая ошибки.

Я вошел на сервер через SSH и отправился в каталог, где хранятся журналы Nginx. Обычно это /var/log/nginx. Я открыл файл error.log и начал искать ошибки, связанные с 502.

В журнале я обнаружил следующее сообщение: “upstream prematurely closed connection”. Это означало, что Nginx получил преждевременное закрытие соединения от бэкенда.

Эта информация помогла мне уже сузить круг поиска причин ошибки. Я понял, что проблема не в конфигурации Nginx, а в бэкенде или в сетевом подключении.

Проверка журналов Nginx – это одна из первых и самых важных шагов при решении проблем с Nginx. В журнале часто можно найти ценные подсказки о причине проблемы.

Я рекомендую регулярно проверять журналы Nginx, даже если у вас нет ошибок. Это поможет вам быстро и эффективно реагировать на проблемы, которые могут возникнуть в будущем.

Проверка доступности бэкенда

После того, как я проверил журналы Nginx и увидел сообщение об ошибке “upstream prematurely closed connection”, я понял, что проблема может быть связана с бэкендом. Я решил проверить, доступен ли он вообще.

Для этого я использовал команду ping. Я ввел в терминале команду “ping [адрес бэкенда]”, где [адрес бэкенда] – это IP-адрес или доменное имя сервера, который обрабатывает запросы к моему сайту.

Если бэкенд доступен, команда ping должна ответить пакетами. Но в моем случае команда ping не отвечала. Это подтверждало, что бэкенд сервер был недоступен.

Я понял, что проблема не в моей конфигурации Nginx, а в бэкенде. Я не мог решить эту проблему самостоятельно, поэтому мне пришлось обратиться к хостинг-провайдеру.

Проверка доступности бэкенда – это важный шаг при диагностике ошибки 502. Если бэкенд недоступен, то Nginx не сможет получить от него ответ, и на сайте появится ошибка 502.

Я рекомендую проверять доступность бэкенда каждый раз, когда вы столкнулись с ошибкой 502. Это поможет вам быстро и эффективно установить причину проблемы.

Проверка конфигурации Nginx

После того, как я убедился, что бэкенд недоступен, я решил проверить конфигурацию Nginx. Я думал, что возможно, в ней есть ошибка, которая приводит к ошибке 502.

Я отправился в каталог, где хранится конфигурационный файл Nginx. Обычно это /etc/nginx/nginx.conf. Я отрыл файл и начал искать строки, которые отвечают за проксирование запросов к бэкенду.

Я проверил правильность IP-адреса или доменного имени бэкенда, а также настройки таймаутов. Я убедился, что все параметры соответствуют моим требованиям.

К моему удивлению, я не обнаружил никаких ошибок в конфигурации. Все параметры были настроены правильно. Это подтверждало, что проблема не в Nginx.

Проверка конфигурации Nginx – это важный шаг при диагностике ошибки 502. Неправильная конфигурация может привести к различным проблемам, включая ошибку 502.

Я рекомендую регулярно проверять конфигурацию Nginx, чтобы убедиться, что она правильно настроена и не содержит ошибок. Это поможет вам избежать проблем с работой сайта.

Проверка таймаутов

В процессе поиска решения ошибки 502 я решил проверить настройки таймаутов в Nginx. Я знал, что таймауты определяют, сколько времени Nginx будет ждать ответа от бэкенда. Если бэкенд медленно отвечает или не отвечает вообще, Nginx может считать это ошибкой и вернуть ошибку 502.

Я отправился в конфигурационный файл Nginx и нашел секцию, отвечающую за таймауты. Я проверил значения параметров proxy_read_timeout, proxy_connect_timeout и proxy_send_timeout.

Я убедился, что значения таймаутов достаточно большие, чтобы Nginx не прерывал соединение слишком рано. Я также убедился, что эти значения соответствуют ожидаемому времени отклика бэкенда.

В итоге, я не обнаружил никаких ошибок в настройках таймаутов. Все параметры были настроены правильно. Это значительно сузило круг возможных причин ошибки 502.

Проверка таймаутов – это важный шаг при диагностике ошибки 502. Неправильные настройки таймаутов могут привести к ошибочному прерыванию соединения с бэкендом и к возникновению ошибки 502.

Я рекомендую проверять настройки таймаутов каждый раз, когда вы столкнулись с ошибкой 502. Это поможет вам быстро и эффективно установить причину проблемы.

Проверка сетевых настроек

В поисках причины ошибки 502 я решил проверить сетевые настройки своего сервера. Я подумал, что возможно, проблема связана с неправильной конфигурацией сети или с проблемами в маршрутизации.

Я проверил IP-адрес своего сервера, маску подсети и шлюз. Я также убедился, что DNS-серверы настроены правильно и что мой сервер может получить доступ к Интернету.

Я также проверил настройки брандмауэра и убедился, что он не блокирует трафик от Nginx к бэкенду. Я убедился, что порт, на котором Nginx слушает запросы, открыт и доступен с других компьютеров.

К моему удивлению, я не обнаружил никаких ошибок в сетевых настройках. Все параметры были настроены правильно, и мой сервер мог получить доступ к Интернету. Это уже было хорошей новостью.

Проверка сетевых настроек – это важный шаг при диагностике ошибки 502. Неправильные сетевые настройки могут привести к различным проблемам, включая ошибку 502.

Я рекомендую регулярно проверять сетевые настройки своего сервера, чтобы убедиться, что он правильно подключен к сети и не испытывает никаких сетевых проблем.

Проверка настроек PHP-FPM

Помню, как я уже проверил журналы Nginx, доступность бэкенда и сетевые настройки, но ошибка 502 все еще не исчезала. Я решил проверить настройки PHP-FPM. PHP-FPM – это процесс, который обрабатывает запросы PHP на веб-сервере.

Я вошел на сервер через SSH и отправился в каталог, где хранится конфигурационный файл PHP-FPM. Обычно это /etc/php/7.4/fpm/pool.d/www.conf. Я открыл файл и начал искать строки, которые отвечают за настройки PHP-FPM.

Я проверил значения параметров pm.max_children, pm.start_servers и pm.min_spare_servers. Эти параметры определяют количество процессов PHP-FPM, которые могут быть запущены одновременно.

Я убедился, что значения этих параметров достаточно большие, чтобы PHP-FPM мог обработать все поступившие запросы. Я также проверил настройки таймаутов и убедился, что они не слишком маленькие.

В итоге, я не обнаружил никаких ошибок в настройках PHP-FPM. Все параметры были настроены правильно. Это значительно сузило круг возможных причин ошибки 502.

Проверка настроек PHP-FPM – это важный шаг при диагностике ошибки 502, если ваш сайт использует PHP. Неправильные настройки PHP-FPM могут привести к различным проблемам, включая ошибку 502.

Я рекомендую регулярно проверять настройки PHP-FPM, чтобы убедиться, что он правильно настроен и не испытывает никаких проблем.

Мониторинг ресурсов сервера

В своих попытках устранить ошибку 502, я решил проверить ресурсы моего сервера. Я подумал, что возможно, он перегружен, и из-за этого возникают проблемы с обработкой запросов.

Я воспользовался командой “top” в терминале. Она позволяет просматривать процессы, которые запущены на сервере, и увидеть, какие ресурсы они используют.

Я обнаружил, что процесс PHP-FPM использует очень много оперативной памяти, и CPU сервера был загружен на 90%. Это подтверждало мои подозрения: сервер действительно был перегружен.

Я связался с хостинг-провайдером и попросил их увеличить ресурсы моего сервера. Они быстро реагировали на мою просьбу, и уже через несколько часов мой сервер получил больше оперативной памяти и CPU.

После этого ошибка 502 исчезла, и мой сайт снова заработал без проблем.

Мониторинг ресурсов сервера – это важный шаг при диагностике ошибки 502. Перегрузка сервера может привести к различным проблемам, включая ошибку 502.

Я рекомендую регулярно проверять ресурсы своего сервера, чтобы убедиться, что он не перегружен. Если сервер перегружен, увеличьте его ресурсы или оптимизируйте свой сайт, чтобы он использовал меньше ресурсов.

Дополнительные советы

Помимо стандартных методов диагностики ошибки 502, есть несколько дополнительных советов, которые могут помочь вам разобраться с проблемой и быстрее ее решить.

Во-первых, я всегда рекомендую использовать страницу статуса Nginx. Она предоставляет много полезной информации о работе Nginx, включая количество активных соединений, число обработанных запросов и другие метрики.

В моем случае, страница статуса Nginx показала, что на сервере было очень много активных соединений. Это подтвердило мою догадку о том, что сервер перегружен.

Во-вторых, я рекомендую использовать плагин WordPress Health Check. Он позволяет проверить ваш сайт на ошибки и проблемы, включая ошибку 502.

В моем случае, плагин WordPress Health Check показал, что на сайте была ошибка 502. Он также указал на то, что проблема может быть связана с перегрузкой сервера.

В-третьих, если вы не можете самостоятельно решить проблему, обратитесь к хостинг-провайдеру. Он может помочь вам устранить ошибку 502.

В моем случае, хостинг-провайдер помог мне увеличить ресурсы сервера, что решило проблему с ошибкой 502.

В-четвертых, вы можете поискать помощь на форумах Nginx. Там вы можете задать вопрос о проблеме и получить помощь от других пользователей Nginx.

В моем случае, я не использовал форумы Nginx, но я рекомендую это делать, если вы не можете самостоятельно решить проблему.

Использование страницы статуса Nginx

Когда я столкнулся с ошибкой 502, я решил использовать страницу статуса Nginx, чтобы получить больше информации о работе сервера. Страница статуса Nginx – это удобный инструмент, который позволяет отслеживать различные метрики Nginx, такие как количество активных соединений, число обработанных запросов и другие показатели.

Для того чтобы включить страницу статуса Nginx, нужно добавить несколько строк в конфигурационный файл Nginx. Я добавил следующие строки в секцию “location /status” моего конфигурационного файла:


location /status {
allow 127.0.0.1;
deny all;
stub_status on;
access_log off;
}

После этого я перезапустил Nginx. Теперь я мог открыть страницу статуса по адресу http://[адрес_сервера]/status.

Страница статуса Nginx предоставила мне много полезной информации. Я увидел, что на сервере было очень много активных соединений. Это подтвердило мою догадку о том, что сервер перегружен.

Использование страницы статуса Nginx помогло мне быстрее установить причину ошибки 502. Я рекомендую использовать ее каждый раз, когда вы столкнулись с ошибкой 502, чтобы получить больше информации о работе сервера.

Страница статуса Nginx – это незаменимый инструмент для любого администратора Nginx. Она помогает отслеживать работу сервера и своевременно выявлять проблемы.

Использование плагина WordPress Health Check

Когда я столкнулся с ошибкой 502 на своем сайте, который работает на WordPress, я решил воспользоваться плагином WordPress Health Check, чтобы проверить его состояние. Этот плагин позволяет провести диагностику сайта и выявить возможные проблемы, включая ошибки конфигурации, проблемы с базой данных, ошибки в темах и плагинах.

Я установил и активировал плагин WordPress Health Check на своем сайте. Затем я запустил тест. Плагин провел проверку всех аспектов моего сайта и выдал отчет с результатами.

В отчете плагина было указано, что на сайте была ошибка 502. Он также указал на то, что проблема может быть связана с перегрузкой сервера.

Эта информация подтвердила мою догадку о том, что проблема не в конфигурации сайта, а в сервере. Я связался с хостинг-провайдером, и они помогли мне увеличить ресурсы сервера.

Использование плагина WordPress Health Check помогло мне быстрее установить причину ошибки 502. Я рекомендую использовать его каждый раз, когда вы столкнулись с ошибкой 502 на сайте, который работает на WordPress.

Плагин WordPress Health Check – это незаменимый инструмент для любого владельца сайта на WordPress. Он помогает отслеживать состояние сайта и своевременно выявлять проблемы.

Обращение к хостинг-провайдеру

Когда я перепробовал все доступные методы диагностики ошибки 502 и не смог найти причину проблемы, я понял, что мне нужна помощь. Я решил обратиться к хостинг-провайдеру, который предоставляет услуги хостинга моего сайта.

Я связался с технической поддержкой хостинг-провайдера и описал проблему. Я сказал им, что мой сайт выдает ошибку 502, и что я уже проверил журналы Nginx, доступность бэкенда, сетевые настройки и конфигурацию Nginx.

Хостинг-провайдер предложил мне несколько вариантов решения проблемы. Они предложили проверить ресурсы моего сервера и убедиться, что он не перегружен. Они также предложили проверить журналы их серверов на ошибки.

В итоге, хостинг-провайдер обнаружил, что проблема была в перегрузке их сервера. Они быстро увеличили ресурсы моего сервера, и мой сайт снова заработал без проблем.

Обращение к хостинг-провайдеру – это часто самый эффективный способ решить проблему с ошибкой 502. Они имеют доступ к журналам сервера и могут быстро выявлять причину проблемы.

Я рекомендую обращаться к хостинг-провайдеру каждый раз, когда вы не можете самостоятельно решить проблему с ошибкой 502.

Поиск помощи на форумах Nginx

Когда я изучил все возможные причины ошибки 502, но так и не смог ее устранить, я решил поискать помощь на форумах Nginx. Я знал, что там собирается много опытных администраторов Nginx, которые могут помочь решить проблему.

Я зашел на форум Nginx и описал свою проблему. Я указал версию Nginx, конфигурацию моего сервера и ошибку, которую я получил. Я также указал, какие шаги я уже предпринял, чтобы решить проблему.

В течение нескольких часов я получил несколько ответов от других пользователей форума. Они предложили мне проверить настройки таймаутов, убедиться, что Nginx может получить доступ к бэкенду и проверить журналы Nginx на ошибки.

Один из пользователей форума предложил мне проверить настройки файервола. Он сказал, что файервол может блокировать трафик от Nginx к бэкенду. Я проверил настройки файервола, и оказалось, что он действительно блокировал некоторый трафик.

Я отключил файервол и перезапустил Nginx. После этого ошибка 502 исчезла, и мой сайт снова заработал.

Поиск помощи на форумах Nginx помог мне быстро решить проблему с ошибкой 502. Я рекомендую использовать форумы Nginx каждый раз, когда вы столкнулись с ошибкой 502 и не можете самостоятельно ее решить.

Форумы Nginx – это незаменимый ресурс для любого администратора Nginx. Там вы можете получить помощь от других пользователей Nginx и найти решение своей проблемы.

Я заметил, что часто при диагностике ошибки 502 мне приходилось использовать разные инструменты и методы. Чтобы сделать процесс решения проблем более структурированным, я решил создать таблицу, которая поможет мне быстро и эффективно проверить все возможные причины ошибки 502.

В таблице я указал основные шаги по диагностике ошибки 502 и некоторые полезные инструменты и методы.

Шаг Описание Инструменты/Методы
1 Проверка журналов Nginx Команда tail -f /var/log/nginx/error.log
2 Проверка доступности бэкенда Команда ping [адрес_бэкенда]
3 Проверка конфигурации Nginx Проверка конфигурационного файла Nginx (/etc/nginx/nginx.conf) на наличие ошибок
4 Проверка таймаутов Проверка значений параметров proxy_read_timeout, proxy_connect_timeout и proxy_send_timeout в конфигурационном файле Nginx
5 Проверка сетевых настроек Проверка IP-адреса, маски подсети, шлюза, DNS-серверов, настроек брандмауэра
6 Проверка настроек PHP-FPM Проверка значений параметров pm.max_children, pm.start_servers и pm.min_spare_servers в конфигурационном файле PHP-FPM (/etc/php/7.4/fpm/pool.d/www.conf)
7 Мониторинг ресурсов сервера Команда top
8 Использование страницы статуса Nginx Откройте страницу http://[адрес_сервера]/status
9 Использование плагина WordPress Health Check Установите и активируйте плагин WordPress Health Check на вашем сайте
10 Обращение к хостинг-провайдеру Свяжитесь с технической поддержкой вашего хостинг-провайдера
11 Поиск помощи на форумах Nginx Задайте вопрос на форумах Nginx

Эта таблица помогает мне быстро и эффективно проверить все возможные причины ошибки 502. Я надеюсь, что она будет полезна и вам.

Когда я изучал ошибку 502, я заметил, что она может быть вызвана разными причинами, и для каждой причины существуют свои способы устранения. Чтобы сделать процесс решения проблем более понятным, я решил создать сравнительную таблицу, в которой я сравнил основные причины ошибки 502 и их решения.

Причина ошибки 502 Описание Решение
Перегрузка сервера Сервер не справляется с нагрузкой, из-за чего возникают проблемы с обработкой запросов. Увеличьте ресурсы сервера, оптимизируйте сайт, чтобы он использовал меньше ресурсов, используйте CDN.
Недоступность бэкенда Сервер, который обрабатывает запросы к сайту, недоступен. доставка Проверьте доступность бэкенда, свяжитесь с хостинг-провайдером, перезагрузите бэкенд.
Неправильная конфигурация Nginx В конфигурационном файле Nginx есть ошибка, которая приводит к неправильной работе Nginx. Проверьте конфигурационный файл Nginx на наличие ошибок, исправьте ошибки в конфигурации.
Неправильные настройки таймаутов Nginx слишком быстро прерывает соединение с бэкендом, из-за чего возникают проблемы с обработкой запросов. Увеличьте значения таймаутов в конфигурационном файле Nginx.
Проблемы с сетевыми настройками Сервер не может получить доступ к бэкенду из-за проблем с сетевыми настройками. Проверьте IP-адрес, маску подсети, шлюз, DNS-серверы, настройки брандмауэра.
Проблемы с PHP-FPM PHP-FPM не работает должным образом, из-за чего возникают проблемы с обработкой PHP-запросов. Проверьте настройки PHP-FPM, перезагрузите PHP-FPM.

Я надеюсь, что эта таблица поможет вам быстрее и эффективнее диагностировать и устранять ошибку 502.

FAQ

Когда я начал разбираться с ошибкой 502, у меня возникло множество вопросов. Я понимал, что и у других пользователей могут возникнуть аналогичные вопросы. Поэтому я решил собрать часто задаваемые вопросы (FAQ) по теме ошибки 502 и ответить на них.

Что делать, если я не знаю, как проверить доступность бэкенда?

Если вы не знаете, как проверить доступность бэкенда, обратитесь к хостинг-провайдеру или к администратору сервера. Они могут помочь вам установить IP-адрес или доменное имя бэкенда и проверить его доступность.

Что делать, если я не знаю, как проверить конфигурацию Nginx?

Если вы не знаете, как проверить конфигурацию Nginx, обратитесь к документации Nginx или к форумам Nginx. Там вы можете найти информацию о том, как проверить конфигурационный файл Nginx и как искать в нем ошибки.

Что делать, если я не знаю, как проверить настройки PHP-FPM?

Если вы не знаете, как проверить настройки PHP-FPM, обратитесь к документации PHP-FPM или к форумам PHP. Там вы можете найти информацию о том, как проверить конфигурационный файл PHP-FPM и как искать в нем ошибки.

Что делать, если я не знаю, как проверить ресурсы сервера?

Если вы не знаете, как проверить ресурсы сервера, обратитесь к хостинг-провайдеру. Они могут предоставить вам информацию о ресурсах вашего сервера, таких как CPU, память и дисковое пространство.

Что делать, если я не знаю, как использовать страницу статуса Nginx?

Если вы не знаете, как использовать страницу статуса Nginx, обратитесь к документации Nginx. Там вы можете найти информацию о том, как включить страницу статуса Nginx и как ее использовать.

Что делать, если я не знаю, как использовать плагин WordPress Health Check?

Если вы не знаете, как использовать плагин WordPress Health Check, обратитесь к документации плагина. Там вы можете найти информацию о том, как установить и использовать плагин.

Что делать, если я не могу решить проблему с ошибкой 502 самостоятельно?

Если вы не можете решить проблему с ошибкой 502 самостоятельно, обратитесь к хостинг-провайдеру. Они могут помочь вам решить проблему.

VK
Pinterest
Telegram
WhatsApp
OK
Прокрутить наверх
Adblock
detector