nginx サーバー上の sshfs および fstab 経由でマウントされたリソースが 404 エラーを返す - 更新すると消える

nginx サーバー上の sshfs および fstab 経由でマウントされたリソースが 404 エラーを返す - 更新すると消える

状況の概要は次のとおりです。 ここに画像の説明を入力してください

私は、nginx学生の作品を提供するサーバー (マシン 2) を運用しています。学生の作品自体は、別のマシン (マシン 1)、つまり私たちのgitoliteサーバーにあります。

とデータ転送を最小限に抑えるため(そして利便性のため)、学生のリポジトリ (マシン 1 上) を、および対応するエントリgit cloneを介して nginx サーバー (マシン 2) 上のディレクトリとしてマウントしています。sshfsfstab

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 つあります。

  1. (推奨:) fstab エントリに何らかの変更を加えて 404 を修正する (例: 404 エラーの原因を修正する)
  2. (1. が失敗した場合:) 404 エラーが発生した場合にページを自動的に再読み込み (更新) するように nginx を構成します。

答え1

nginx別のユーザーとして実行されていると思います。また、デフォルトではsshfsマウントはマウントしたユーザーのみに表示されます。

したがって、(デフォルトでは)nginxファイルを見ることができません。

sshfs/ fuse(ファイルsshfsシステム)には、より見やすくするためのオプションがありますfuse。(覚えていませんが、マニュアルに載っています)。

関連情報