Как определить, какой запрос nginx отправляет прокси и какой он обслуживает?

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

Я хотел бы знать, как я могу проверить, правильно ли установлены правила. Так как Thin не регистрирует запросы, мне нужно настроить журналы nginx таким образом, чтобы он отображал, какие запросы были обработаны как файлы, а какие были переданы в Thin. Это вообще возможно? Если так, то как?

3 ответа

Решение

В зависимости от вашей конфигурации, это может быть легко достигнуто. Вот мое решение...

сервер {
  имя_сервера имя_домена.com;
  root / path / to / files;
  # index index.php index.html;

  # регистрация всех запросов в access.log
  access_log /some/path/such/as/var/log/nginx/access.log;

  место нахождения / {
    try_files $uri $uri @thin;
  }

  местоположение @thin {
    # передать запросы на худой
    # proxy_pass http: // thin;

    # регистрация прокси в proxy-access.log
    access_log /some/path/such/as/var/log/nginx/proxy-access.log;
  }
}

Надеюсь это поможет!

Создать собственный формат журнала, который включает в себя $upstream_response_time - если ваш бэкэнд обслуживает его, вы должны получить количество миллисекунд, чтобы получить ответ, если nginx обслуживает его внутренне, вы должны получить тире

Это очень грязный хак, но сделайте так, чтобы у Nginx или Thin не было разрешений на чтение этих файлов.:) Таким образом, вы сможете выяснить, какой из них получает ошибку, следовательно, чтение / обслуживание файла.

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

Другие вопросы по тегам