Win32 appends synchronized if only FILE_APPEND_DATA and SYNCHRONIZE are set without any other flags. On the other hand, Unix requires at least the write flag to be set together with O_APPEND.
diff --git a/src/core/ngx_open_file_cache.c b/src/core/ngx_open_file_cache.c index 2f6581b..cb70736 100644 --- a/src/core/ngx_open_file_cache.c +++ b/src/core/ngx_open_file_cache.c
@@ -466,8 +466,8 @@ fd = ngx_open_file(name, NGX_FILE_RDONLY, NGX_FILE_OPEN, 0); } else { - fd = ngx_open_file(name, NGX_FILE_RDWR|NGX_FILE_APPEND, - NGX_FILE_CREATE_OR_OPEN, NGX_FILE_DEFAULT_ACCESS); + fd = ngx_open_file(name, NGX_FILE_APPEND, NGX_FILE_CREATE_OR_OPEN, + NGX_FILE_DEFAULT_ACCESS); } if (fd == NGX_INVALID_FILE) {