![nginx サーバー上の sshfs および fstab 経由でマウントされたリソースが 404 エラーを返す - 更新すると消える](https://rvso.com/image/170672/nginx%20%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E4%B8%8A%E3%81%AE%20sshfs%20%E3%81%8A%E3%82%88%E3%81%B3%20fstab%20%E7%B5%8C%E7%94%B1%E3%81%A7%E3%83%9E%E3%82%A6%E3%83%B3%E3%83%88%E3%81%95%E3%82%8C%E3%81%9F%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%8C%20404%20%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E8%BF%94%E3%81%99%20-%20%E6%9B%B4%E6%96%B0%E3%81%99%E3%82%8B%E3%81%A8%E6%B6%88%E3%81%88%E3%82%8B.png)
私は、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
。(覚えていませんが、マニュアルに載っています)。