nginx代理下载日志
背景:
我们公司在客户环境部署了一套业务系统,前端是一台单独的nginx服务器,后端有四台业务服务器跑java程序。因为客户那边是纯内网环境,每次出问题看日志都是个麻烦事,所以研发提出了这个需求。
| IP | 服务 |
| 192.168.2.10 | nginx |
| 192.168.2.11 | java1 |
| 192.168.2.12 | java2 |
一、nginx暴露日志目录
在业务机器上部署一个nginx来提供http方式访问日志目录和文件。宿主机日志路径是/root/logs
docker run -d \ --name nginx-logs \ -p 7100:80 \ -v /root/logs:/usr/share/nginx/html:ro \ -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \ nginx:1.25.0
nginx配置内容如下
events {} http { server { listen 80; server_name localhost; # 专门匹配以 .log 结尾的文件,设置为下载 location ~ \.log$ { root /usr/share/nginx/html; add_header Content-Type application/octet-stream; add_header Content-Disposition 'attachment; filename="$uri"'; } location / { root /usr/share/nginx/html; autoindex on; autoindex_exact_size off; autoindex_localtime on; } } }
访问验证

所有后端业务服务器上都是以上的操作,用nginx暴露http日志路访问。
二、在前端nginx上代理访问
我这边也启动一个nginx做示例
docker run -d \ --name nginx-proxy \ -p 7100:80 \ -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \ nginx:1.25.0
nginx配置内容如下:
events {} http { server { listen 7100; location /yewu1/ { proxy_pass http://192.168.2.11:7100/; 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_redirect off; }
location /yewu2/ {
proxy_pass http://192.168.2.12:7100/;
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_redirect off;
}
}
}
此处设计的是浏览器访问http://192.168.2.10/yewu1/跳转到第一台业务服务器的日志web,访问http://192.168.2.10/yewu2/跳转到第二台业务服务器的日志web。

浙公网安备 33010602011771号