Назад | Перейти на главную страницу

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

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

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