either error log empty or access log empty

zhnupy nginx-forum at nginx.us
Sat Mar 24 00:48:11 UTC 2012

hello, I have an nginx/1.0.14 installation with 3 virtual hosts. Each
virtual hosts features its own error_log and access_log, problem is:
eventhough I have similar log configuration on all virtual hosts either
access.log is always empty or error.log is always empty on each virtual

I better explain with facts, this is nginx configuration ( I'm just
copying relevant parts please disregard any syntax error I might have
introduced by doing this) :

        server {
                listen 80 default_server;
                server_name www.HOST_A.com;
                error_log  /var/log/nginx/HOST_A.error.log error;
                access_log  /var/log/nginx/HOST_A.access.log;
                root /srv/www/HOST_A.com/public_html;
        server {
                listen 80;
                server_name www.HOST_B.com;
                error_log  /var/log/nginx/HOST_B.error.log error;
                access_log  /var/log/nginx/HOST_B.access.log;
                root /srv/www/HOST_B.com/public_html;
        server {
                listen 80;
                server_name www.HOST_C.com;
                error_log  /var/log/nginx/HOST_C.error.log error;
                access_log  /var/log/nginx/HOST_C.access.log;
                root /srv/www/HOST_C.com/public_html;

Now, I use wget to make a request for a non existent file and get a 404

wget http://www.HOST_A.com/nonexistentfile.php
wget http://www.HOST_B.com/nonexistentfile.php
wget http://www.HOST_C.com/nonexistentfile.php

ls command output shows that for HOST_A only error.log gets updated, and
for HOST_B and HOST_C only access.log gets updated (I've changed
directory and file owner to nginx user and relaxed permissions but it
didn't worked):

-rw-rw-rw- 1 nginx nginx    0 Mar 23 17:28 HOST_A.access.log
-rw-rw-rw- 1 nginx nginx 1240 Mar 23 17:52 HOST_A.error.log
-rw-rw-rw- 1 nginx nginx  817 Mar 23 17:52 HOST_B.access.log
-rw-rw-rw- 1 nginx nginx    0 Mar 23 17:28 HOST_B.error.log
-rw-rw-rw- 1 nginx nginx  817 Mar 23 17:48 HOST_C.access.log
-rw-rw-rw- 1 nginx nginx    0 Mar 23 17:28 HOST_C.error.log

As you can see: either  <host>.access.log is empty or <host>.error.log
is empty

This is last line from error log of HOST_A:

2012/03/23 17:29:12 [error] 3227#0: *3 open()
"/srv/www/HOST_A.com/public_html/nonexistentfile.php" failed (2: No such
file or directory), client: XXX.XXX.XXX.XXX, server: www.HOST_A.com,
request: "GET /nonexistentfile.php HTTP/1.1", host: "HOST_A.com"

and this is last line from access log of HOST_B ( HOST_C is identical): - - [23/Mar/2012:17:52:42 -0600] "GET
/nonexistentfile.php HTTP/1.1" 404 191 "-" "Mozilla/5.0 (Windows NT 5.1;
rv:11.0) Gecko/20100101 Firefox/11.0"

In short, I don't know why only one log file per host gets updated. 
Using htop with "L" option  I can verify that the nginx process has all
log files open and yet it doesn't write to all of them. 

I tried changing file and directory ownership but that didn't worked ( I
restarted nginx after those changes). I remember this wasn't an issue
when I started using nginx 1.0.11

I'd deeply appreciate any suggestions on this issue

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,224315,224315#msg-224315

More information about the nginx mailing list