nginx: как я разыскиваю случайные 500 от nginx (не мое приложение). Потенциально имеет некоторое отношение к загрузке?

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtKYac1ZiC43jF6BdclPok0Yv2g4YecBVJ6a7qggOSGjRAxh2cckwCBUR6VoVc2vmt9tcHCLWuVVpKUTUynbMdWq8wOdbK7Ud7n63cpg1PL44Hg9Wn2kT/aJdMMABSE5wSNsffxslcoUhF4h0mHaf+X6E5IKVhhHsy2g1yeoc2//0Q5YPt5Kj72VY1j3aeZ8a/tqSHu5rZpFYDddnv0ARWIgSvh7jUudKT9phLUiryX9TCyGVKFCrvVKwexjAmOz63pvWtX0TJughWskvDP1ZREkhjkxtCxofwn0NG1QSbbEgGYBLf3T1Pgfkhx83Uce01Aw1hBqdl228NRg0cv0KaQ==

9
задан 1 October 2011 в 09:34
3 ответа

Мы используем комбинацию форматов журналов в nginx и lmon, чтобы отловить подобные вещи. Формат журнала NGINX, например:

log_format main '$ status: $ request_time: $ upstream_response_time: $ pipe: $ body_bytes_sent $ connection $ remote_addr $ host $ remote_user [$ time_local] "$ запрос" "$ http_referer" "$ http_user_agent" "$ http_x_forwarded_for" $ upstream_addr $ upstream_cache_status "in: $ http_cookie" '

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

Мы используем LMON для просмотра этих журналов, а затем предупреждаем нас (пейджеры / электронная почта), если в журналах появляются ошибки, такие как 500, 503, 400:

http: // www .bsdconsulting.no / tools / lmon-README

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

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

http://wiki.nginx.org/NginxHttpProxyModule#proxy_next_upstream

6
ответ дан 2 December 2019 в 22:31

error_log $ filename debug; включит регистрацию на уровне отладки в журнале ошибок - это даст вам много-много деталей внутреннего статуса nginx на момент ошибки, и если скомпилирован с --with-debug (что некоторые дистрибутивы делают по умолчанию), он даст еще больше.

Имейте в виду, что уровень «отладки» действительно генерирует лотов вывода для укажите, что вы можете захотеть посмотреть свое дисковое пространство ...

4
ответ дан 2 December 2019 в 22:31

В моем случае конф-файл был назван неправильно (был example.com вместо example.com.conf) и не был включен. Каким-то образом это привело не к 'Добро пожаловать в nginx', а к незарегистрированной ошибке HTTP 500. Ну, на самом деле она была записана в журнал, но в файле ошибки с другого виртуального хоста, который не мог работать с этим конкретным url.

.
1
ответ дан 2 December 2019 в 22:31

Теги

Похожие вопросы