如何防止 nginx 在 Centos 6 中锁定已挂载的 samba 分区上的文件

如何防止 nginx 在 Centos 6 中锁定已挂载的 samba 分区上的文件

我在 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。他们不认为这是一个错误。

相关内容