我在 centos 6.3 virtualbox 4.2.4 虚拟机中使用 nginx 1.3.8。系统正在运行可通过 yum update 获得的最新软件。主机操作系统是 Windows 7。nginx 服务的站点文件位于已安装的 samba 分区上,该分区是主机 Windows 系统上的一个文件夹。
即,在 Linux 中,nginx 路径指的是 /home/vhosts,而它在 Windows 上是从 D:\vhosts\ 挂载的。samba 分区以 root 身份挂载,具有 777 权限。/etc/fstab 如下所示,但具有真实 ip、用户名和密码:
//hostip/vhosts /home/vhosts cifs username=username,password=SECRETPASSWORD,uid=root,gid=root,file_mode=0777,dir_mode=0777,rw,_netdev 0 0
即 linux/nginx 从 windows 共享读取,而不是相反。
在 /etc/samba/smb.conf 中,我尝试禁用所有 samba 锁定功能,但即使重新启动虚拟机后似乎也没有任何效果。
locking=no
share modes=no
oplocks = no
level2 oplocks = no
kernel oplocks =no
当我尝试覆盖 Windows 中已使用 nginx 至少访问过一次的 javascript 文件时,我在 Windows 或 Linux 中收到“访问被拒绝”错误。
如果我运行“service nginx reload”,锁定就会被移除,我就可以保存文件了。这就是为什么我认为是 nginx 导致了锁定。
目录也会出现同样的问题。不过,这可能是与使用 samba 无关的另一个问题。
我正在使用 samba,以便我可以管理虚拟机之外的源代码。
还要注意,在我运行“service nginx reload”之后,我正在编辑的文件实际上会自动从 Windows 主机中删除。
已解决:我刚刚查看了我的 nginx.conf 文件。看来“open_file_cache”功能是导致文件被锁定和删除的原因。当我将此选项设置为 open_file_cache off; 时,我的问题就解决了。当允许时,我会重新发布答案。
答案1
已解决:我刚刚查看了我的 nginx.conf 文件。看来“open_file_cache”功能是导致文件被锁定和删除的原因。当我将此选项设置为 open_file_cache off; 时,我的问题就解决了。
nginx 的开发人员也关闭了我的错误报告,说如果我想在 Windows 中编辑文件,就不应该使用 open_file_cache。他们不认为这是一个错误。