#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 я добавил больше деталей.