sshfs と fstab を介して nginx サーバーにインストールされたリソースは 404 エラーを表示し、リフレッシュすると消えます。

sshfs と fstab を介して nginx サーバーにインストールされたリソースは 404 エラーを表示し、リフレッシュすると消えます。

状況をまとめると、次のようになります。 ここに画像の説明を入力してください。

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

データ転送を最小限に抑え、便宜上、git clone学生sshfsリポジトリ(マシン1にあります)をそのエントリを使用してnginxサーバー(マシン2)のディレクトリにマウントしました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つの可能な解決策があります。

  1. (優先:)404エラーの原因を修正するなど、fstabエントリをいくつか修正して404を修正します。
  2. (1.失敗した場合:)404エラーが発生したときにページを自動的にリロード(更新)するようにnginxを設定します。

答え1

nginxプログラムが別のユーザーとして実行されているようです。デフォルトでは、インストールはそのインストールをインストールsshfsしたユーザーにのみ表示されます。

したがって、これらのファイルは(デフォルトで)nginx表示されません。

sshfs/にはオプションがありますfuse(ファイルシステムsshfsです)。fuseもっと目立つようにしてください。 (覚えていませんが、指示に記載されています。)

関連情報