Я запускаю 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
файловая система), чтобы сделать их более заметными. (Я не помню, но это есть в руководстве).