Nginx

出現在 /usr/share/nginx 上的額外日誌

  • October 18, 2019

我們有一個遠端系統日誌伺服器,我們在其中儲存所有虛擬機的日誌。一切工作正常,除了在某些使用 nginx 的機器上,包含已發送到遠端 syslog 伺服器的所有內容的日誌文件出現在 directory 上/usr/share/nginx

我已經檢查了 rsyslog conf 以及 nginx conf,但我不知道問題出在哪裡。我刪除了那個日誌文件,/usr/share/nginx幾天后它又出現了。

django-03 mario:~$ ls -larth /usr/share/nginx/
total 1,5G
drwxr-xr-x   2 root     root   23 dic  5  2018 html
drwxr-xr-x 150 root     root 4,0K abr 23 13:34 ..
drwxr-xr-x   3 root     root  148 sep  6 06:26 .
-rw-r--r--   1 www-data root 247M oct 17 09:31 syslog:server=someserver.vps:10514,tag=nginxerror
-rw-r--r--   1 www-data root 1,2G oct 17 09:33 syslog:server=someserver.vps:10514,tag=nginxaccess

這是 rsyslog 配置。

###############
#### RULES ####
###############                 
... Rest of the file ...
.
.
.

*.* @@someserver.vps:10514

如您所見,rsyslog 正在將所有內容髮送到 someserver.vps:10514 並且工作正常。

這是 nginx 配置,我們將日誌發送到遠端伺服器和本地機器/var/log/syslog

... Rest of the file ...
.
.
.
       ##
       # Logging Settings
       ##
       log_format vhosts '$host $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';

       access_log /var/log/nginx/access.log vhosts;
       error_log /var/log/nginx/error.log;
       access_log syslog:server=someserver.vps:10514,tag=nginxaccess vhosts;
       error_log syslog:server=someserver.vps:10514,tag=nginxerror;


       ##
       # Virtual Host Configs
       ##

       include /etc/nginx/conf.d/*.conf;
       include /etc/nginx/sites-enabled/*;
}

如您所見,所有日誌/usr/share/nginx/的名稱都出現了。someserver.vps就像1.2G,我們不知道為什麼會出現在那裡。

從文件中:

從 1.7.1 版開始可以記錄到 syslog。

如果您的版本較舊,nginx 會將 syslog 指令視為文字文件名。

在這種情況下,這一行:

access_log syslog:server=someserver.vps:10514,tag=nginxaccess vhosts;

配置 nginx 以將訪問日誌寫入名為syslog:server=someserver.vps:10514,tag=nginxaccess. 沒有絕對路徑,所以它是在守護程序主目錄中創建的。

似乎 nginx 無法解析 someserver.vps 地址(幾天前我們遇到了一些 dns 問題),並且正如您所說,nginx 將 syslog 視為文字文件名,並在守護程序主目錄上創建。

由於 rsyslog 配置,我們在遠端 syslog 伺服器上接收日誌。這就是讓我感到困惑的地方。

非常感謝您的幫助

引用自:https://serverfault.com/questions/988364