我正在运行一台nginx
服务器(机器 2),它为我们的学生提供作业。学生作业本身位于另一台机器(机器 1)上:我们的gitolite
服务器。
为了最大限度地减少git clone
数据传输(并且为了方便),我通过sshfs
相应的条目将学生存储库(位于机器 1 上)作为目录安装在 nginx 服务器(机器 2)上fstab
。
fstab
这是机器 2 上的条目之一:
[email protected]:/path/to/student/work/on/machine1 /path/to/mount/point/on/machine2
fuse.sshfs x-systemd.automount,_netdev,user,idmap=user,follow_symlinks,
identityfile=/path/to/rsa-key/of/ssh-user/key_rsa,allow_other,default_permissions,
reconnect 0 0
(注意:在 fstab 文件中,这是排版为一行,但为了便于阅读,我在上面添加了换行符)
这种设置原则上是有效的,这意味着学生的作品可以通过 nginx 提供的网站访问。
但是当用户尝试查看学生作业时。大多数时候用户会收到来自 nginx 的 404 错误。只需重新加载页面即可修复此错误。但大多数用户(显然)不会这样做(他们只是假设网址有错误)。
我看到两种可能的解决方案:
- (首选:)通过对 fstab 条目进行一些修改来修复 404,例如修复 404 错误的原因
- (如果 1. 失败:)配置 nginx,以便在出现 404 错误时自动重新加载(刷新)页面。
答案1
我认为该程序nginx
正在以不同的用户身份运行。默认情况下,sshfs
安装仅对安装它们的用户可见。
因此(默认情况下)nginx
看不到这些文件。
sshfs
/有选项fuse
(sshfs
是fuse
文件系统)。让它们更加明显。 (我不记得了,但说明书上有)。