Как определить, какой запрос 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 не было разрешений на чтение этих файлов.:) Таким образом, вы сможете выяснить, какой из них получает ошибку, следовательно, чтение / обслуживание файла.
Кроме того, вы должны иметь возможность добавить пользовательский заголовок в блок конфигурации, который обслуживает статические файлы. Тогда вы сможете увидеть наличие заголовка или нет.