Как получить выходные данные из error.log в контейнере?

#docker #nginx

#docker #nginx

Вопрос:

Я пытаюсь отладить проблему с сетью с помощью контейнера Nginx. Он выдает код состояния 502.

Я знаю, что журнал находится внутри /var/log/nginx/error.log . Когда я открываю интерактивную оболочку:

docker exec -it nginx_container /bin/sh и быстро cd в то место, с помощью которого я не могу его открыть nano vi или получить содержимое cat .

Как я могу получить содержимое журнала ошибок?

config.file:

 server {
  listen 80;
  location / {
    proxy_pass        http://users:5000;
    proxy_redirect    defau<
    proxy_set_header  Host $host;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  X-Forwarded-Host $server_name;
    proxy_connect_timeout 120;
    proxy_send_timeout 120;
    proxy_read_timeout 120;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    client_max_body_size 1500M;
    keepalive_timeout 120;
  }
}
 

в моей конфигурации flask я включил app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 , чтобы избежать кода 413.

Я отправляю файлы размером <= 10 МБ на этот маршрут.

Комментарии:

1. Если вы вообще не изменяли конфигурацию контейнера, она будет в docker logs выходных данных.

2. @DavidMaze Я знаю о docker logs команде, однако она не дает мне очень необходимых подробностей. Код состояния 502 слишком расплывчатый. Причиной этого может быть дюжина вещей. Журнал ошибок значительно сужает его.

3. Более конкретно, в стандартной настройке nginx /var/log/nginx/error.log это символическая ссылка на /dev/stderr , поэтому все, что может попасть в журнал ошибок, попадает в стандартный вывод сервера, а оттуда в docker logs . По умолчанию отдельного файла журнала нет.

4. @DavidMaze docker logs nginx дает мне sendfile() failed (32: Broken pipe) while sending request to upstream , что опять же не очень полезно. Я включу свой конфигурационный файл.

5. @DavidMaze я добавил больше деталей.