nginx - Nginx 更改日志文件的所有者和权限
问题描述
Nginx 定期更改所有者(从“myuser”到“nginx”)和日志文件的权限(/apps/nginx_logs/)。我怎样才能禁用这种行为?
我阅读了一些关于 /etc/logrotate.conf 的内容,但并不真正了解如何去做。
/etc/logrotate.conf的一部分
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
/etc/nginx/nginx.conf的一部分
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
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;
tcp_nodelay on;
types_hash_max_size 2048;
keepalive_timeout 1800;
proxy_send_timeout 1800s;
proxy_read_timeout 1800s;
proxy_connect_timeout 1800s;
send_timeout 1800s;
client_max_body_size 150m;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SH:ECDHE-ECDSA-AES128-GCM-SHA256:!aNULL:!MD5:!3DES:!DES;
ssl_prefer_server_ciphers on;
proxy_set_header X-SSL-Client_Cert $ssl_client_cert;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
include /etc/nginx/conf.d/*.conf;
}
解决方案
根据我的观察,这是因为在您的情况下,主 nginx 进程由用户“myuser”运行,而工作进程由 nginx.conf 中定义的用户运行:“user nginx;” (当 nginx 运行时,使用命令“ps -efl | grep nginx”查看正在运行的进程及其所有者)。当日志文件在启动时不存在时,它们由主 nginx 进程创建,因此具有“myuser”的所有者、组和 umask 定义的权限。当日志文件滚动(可能通过 logrotate cron 作业)并且 nginx 在滚动时正在运行时,nginx 工作进程将在处理下一个请求时创建日志文件,并且日志文件将具有所有者、组和 umask用户“nginx”的定义权限。
推荐阅读
- docker - docker Elasticsearch 5.6.10 如何删除用户名和密码
- workbox - Workbox Service Worker 手动更新流程
- java - Log4j2 将值附加到模式
- c# - 将明细表行转列linq转sql lambda表达式(主明细关系)
- python - 在 Stellargraph 中拆分用于 Node2vec 链路预测的训练测试集
- java - 如何在 jsqlparser 中验证 unpivot sql 查询?
- python - 不在 PyPI 中安装 repo
- c# - 如何最好地响应开放的 HTTP 范围请求
- xamarin.forms - 如何在 xamarin 表单中与从底部效果飞入并行制作多个控件的动画?
- mongodb - 如何在 MongoDB 中获取和使用字段名称列表?