我正在運行一台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
檔案系統)。讓它們更加明顯。 (我不記得了,但說明書上有)。