我有一个运行 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#
答案 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" "-"