Webdav upload and wrong modify time stamp (0.7.65, 0.8.34)
    Marcin Engelmann 
    m.engelmann at imagin.com.pl
       
    Tue Mar 30 15:16:00 MSD 2010
    
    
  
Hello,
I noticed that uploading file (webdav) when client_body_temp_path and
document root are on different partitions sets access and modify time
stamps to 1970-01-01 instead of valid time. It works fine if
client_body_temp_path and document root are on the same partition.
I tested nginx 0.7.65 and 0.8.34, both on Debian lenny. 
1. Test partition: ext3, default mount options
# mount -o defaults -t ext3 /dev/sda3 /home/nginx-test
2. client_body_temp_path and document root on different partitions
root /home/nginx-test/upload
client_body_temp_path /tmp
# curl -T test.txt http://127.0.0.1:8080/test.txt
# stat /home/nginx-test/upload/test.txt 
  File: `/home/nginx-test/upload/test.txt'
  Size: 5         	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 22896642    Links: 1
Access: (0640/-rw-r-----)  Uid: (   33/www-data)   Gid: (   33/www-data)
Access: 1970-01-01 00:59:59.000000000 +0100
Modify: 1970-01-01 00:59:59.000000000 +0100
Change: 2010-03-30 10:53:22.000000000 +0200
Wrong access and modify.
3. client_body_temp_path and document root on the same partition
root /home/nginx-test/upload
client_body_temp_path /home/nginx-test/tmp
# curl -T test.txt http://127.0.0.1:8080/test2.txt
# stat /home/nginx-test/upload/test2.txt 
  File: `/home/nginx-test/upload/test2.txt'
  Size: 5         	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 15564807    Links: 1
Access: (0640/-rw-r-----)  Uid: (   33/www-data)   Gid: (   33/www-data)
Access: 2010-03-30 10:57:28.000000000 +0200
Modify: 2010-03-30 10:57:28.000000000 +0200
Change: 2010-03-30 10:57:28.000000000 +0200
Access and modify are OK.
4. My nginx.conf
user www-data;
pid /var/run/nginx.pid;
error_log /var/log/nginx/error.log;
events {
}
http {
server {
    listen 127.0.0.1:8080;
    access_log /var/log/nginx/access.log;
    root /home/nginx-test/upload;
    client_max_body_size 4g;
    create_full_put_path on; 
    client_body_temp_path /home/nginx-test/tmp;
    # client_body_temp_path /tmp;
    dav_methods PUT DELETE MKCOL MOVE;
    dav_access user:rw group:r;
}
}
Best regards,
-- 
Marcin Engelmann
    
    
More information about the nginx
mailing list