В настоящее время у меня проксирование nginx для Тонкий, но настроен для обслуживания статических файлов для приложения, которое обслуживает Thin, вместо проксирования запроса.
Я хотел бы знать, как я могу проверить, что правила установлены правильно. Поскольку Thin не регистрирует запросы, мне нужно будет настроить журналы nginx таким образом, чтобы он показывал, какие запросы были обработаны как файлы, а какие были переданы в Thin. Это вообще возможно? Если да, то как?
создать собственный формат журнала, который включает $upstream_response_time
- если ваш бэкэнд обслуживает его, вы должны получить количество миллисекунд, чтобы получить ответ, если nginx обслуживает его внутренне, вы должны получить тире
В зависимости от вашей конфигурации, этого может быть легко добиться. Вот мое решение ...
server { server_name domainname.com; root /path/to/files; # index index.php index.html; # logging of all requests in access.log access_log /some/path/such/as/var/log/nginx/access.log; location / { try_files $uri $uri @thin; } location @thin { # pass the requests to thin # proxy_pass http://thin; # proxy specific logging in proxy-access.log access_log /some/path/such/as/var/log/nginx/proxy-access.log; } }
Надеюсь это поможет!
Это действительно грязный взлом, но сделайте так, чтобы у Nginx или Thin не было разрешений на чтение этих файлов. :) Таким образом вы сможете определить, в каком из них возникает ошибка, и, следовательно, читать / обслуживать файл.
В качестве альтернативы вы можете добавить настраиваемый заголовок в блок конфигурации, который обслуживает статические файлы. Тогда вы сможете увидеть наличие заголовка или нет.