私は、nginx
学生の作品を提供するサーバー (マシン 2) を運用しています。学生の作品自体は、別のマシン (マシン 1)、つまり私たちのgitolite
サーバーにあります。
とデータ転送を最小限に抑えるため(そして利便性のため)、学生のリポジトリ (マシン 1 上) を、および対応するエントリgit clone
を介して nginx サーバー (マシン 2) 上のディレクトリとしてマウントしています。sshfs
fstab
fstab
これはマシン 2 のエントリの 1 つです。
[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 ファイルでは 1 行として入力されていますが、読みやすくするために上に改行を追加しました)
この設定は原則として機能し、nginx が提供する Web サイトを介して学生の作品にアクセスできるようになります。
しかし、ユーザーが学生の作品を見ようとすると、ほとんどの場合、nginx から 404 エラーが表示されます。このエラーは、ページを再読み込みするだけで修正できます。しかし、ほとんどのユーザーは (当然ですが) それを行いません (URL に問題があると単純に想定します)。
考えられる解決策は 2 つあります。
- (推奨:) fstab エントリに何らかの変更を加えて 404 を修正する (例: 404 エラーの原因を修正する)
- (1. が失敗した場合:) 404 エラーが発生した場合にページを自動的に再読み込み (更新) するように nginx を構成します。
答え1
nginx
別のユーザーとして実行されていると思います。また、デフォルトではsshfs
マウントはマウントしたユーザーのみに表示されます。
したがって、(デフォルトでは)nginx
ファイルを見ることができません。
sshfs
/ fuse
(ファイルsshfs
システム)には、より見やすくするためのオプションがありますfuse
。(覚えていませんが、マニュアルに載っています)。