不显示 Nginx 日志

时间:2021-02-18 14:01:49

标签: docker nginx logging

我有一个运行 nginx 的 docker,端口转发到 8080

我只想在我点击时查看 nginx 中的日志

curl http://localhost:8080

(我得到了答案,但我想查看日志)

access.log 和 error.log 并从 /etc/nginx/nginx.conf 启用

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

tail -f access.log 和 cat access.log 都不起作用。我得到的只是一个空行:

root@fe0f47477548:/var/log/nginx# cat access.log

^C
root@fe0f47477548:/var/log/nginx#

1 个答案:

答案 0 :(得分:0)

NGINX docker 发行版将 (soft links) 日志重定向到 stdout/stderr

lrwxrwxrwx 1 root root 11 Feb 17 19:20 access.log -> /dev/stdout
lrwxrwxrwx 1 root root 11 Feb 17 19:20 error.log -> /dev/stderr

来自 Docker 主机

您可以使用 Docker 日志访问日志

docker logs nginx

从 Docker 容器内部

可以删除标准 NGINX Docker Image 中定义的日志转发。
这需要创建自定义 Dockerfile(即 mynginx),但这是一个简单的更改

FROM nginx:latest

# drop symlinks
RUN unlink /var/log/nginx/access.log
RUN unlink /var/log/nginx/error.log

运行新定义的容器时,可以在 /var/logs/nginx

中看到日志文件
-rw-r--r-- 1 root root 491 Feb 19 13:14 access.log
-rw-r--r-- 1 root root 0 Feb 19 13:14 error.log

root@ca2472f28be5:/var/log/nginx# cat access.log
72.25.0.1 - - [19/Feb/2021:13:15:55 +0000] "GET 
/static/js/main.f81cbe58.chunk.js HTTP/1.1" 304 0 "http://localhost/" 
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36" "-"