首页 > 解决方案 > 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

解决方案


根据我的观察,这是因为在您的情况下,主 nginx 进程由用户“myuser”运行,而工作进程由 nginx.conf 中定义的用户运行:“user nginx;” (当 nginx 运行时,使用命令“ps -efl | grep nginx”查看正在运行的进程及其所有者)。当日志文件在启动时不存在时,它们由主 nginx 进程创建,因此具有“myuser”的所有者、组和 umask 定义的权限。当日志文件滚动(可能通过 logrotate cron 作业)并且 nginx 在滚动时正在运行时,nginx 工作进程将在处理下一个请求时创建日志文件,并且日志文件将具有所有者、组和 umask用户“nginx”的定义权限。


推荐阅读