![ресурсы, смонтированные через sshfs и fstab на сервере nginx, выдают ошибку 404 - исчезает при обновлении](https://rvso.com/image/170672/%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B%2C%20%D1%81%D0%BC%D0%BE%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20sshfs%20%D0%B8%20fstab%20%D0%BD%D0%B0%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B5%20nginx%2C%20%D0%B2%D1%8B%D0%B4%D0%B0%D1%8E%D1%82%20%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D1%83%20404%20-%20%D0%B8%D1%81%D1%87%D0%B5%D0%B7%D0%B0%D0%B5%D1%82%20%D0%BF%D1%80%D0%B8%20%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8.png)
Я запускаю nginx
сервер (машина 2), который обеспечивает работу наших студентов. Сама студенческая работа находится на другой машине (машина 1): наш gitolite
сервер.
Чтобы минимизировать git clone
передачу данных (и для удобства), я монтирую студенческие репозитории (размещенные на машине 1) как каталоги на сервере nginx (машина 2) с помощью sshfs
и соответствующих 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.
Но когда пользователь пытается посмотреть студенческую работу. В большинстве случаев пользователь получит ошибку 404 от nginx. Эту ошибку можно исправить, просто перезагрузив страницу. Но большинство пользователей (очевидно) этого не сделают (они просто предполагают, что URL-адрес неисправен).
Я вижу два возможных решения:
- (предпочтительно:) исправление ошибки 404 путем внесения некоторых изменений в запись fstab, например, путем исправления причины ошибки 404
- (если 1. не удается:) настройка nginx для автоматической перезагрузки (обновления) страницы в случае возникновения ошибки 404.
решение1
Я бы подумал, что он nginx
работает под другим пользователем. И по умолчанию sshfs
монтирования видны только тому пользователю, который их монтирует.
Поэтому (по умолчанию) nginx
файлы не видны.
Есть параметры для sshfs
/ fuse
( sshfs
это fuse
файловая система), чтобы сделать их более заметными. (Я не помню, но это есть в руководстве).