У меня установлен Nginx на Ubuntu, и у меня есть следующий файл конфигурации:
server {
root /www/test;
index index.html index.htm;
server_name .dev.mysite.info;
У меня есть файлы HTML в каталоге / www / test, и все работает нормально.
Теперь я хочу изменить свою папку на мягкую ссылку:
lrwxrwxrwx 1 root root 33 Jun 17 10:39 test -> /root/Dropbox/digital_ocean/test/
Но получите сообщение об ошибке в браузере:
"500 Internal Server Error"
Почему и как это исправить?
Обновить:
root@ocean:/var/log/nginx# cat error.log
2013/06/17 11:40:27 [crit] 26197#0: *1 stat() "/www/test/" failed (13: Permission denied), client: 195.239.188.28, server: dev.meditat0r.info, request: "GET / HTTP/1.1", host: "meditat0r.info"
2013/06/17 11:40:27 [crit] 26197#0: *1 stat() "/www/test/" failed (13: Permission denied), client: 195.239.188.28, server: dev.meditat0r.info, request: "GET / HTTP/1.1", host: "meditat0r.info"
2013/06/17 11:40:27 [crit] 26197#0: *1 stat() "/www/test/index.html" failed (13: Permission denied), client: 195.239.188.28, server: dev.meditat0r.info, request: "GET / HTTP/1.1", host: "meditat0r.info"
2013/06/17 11:40:27 [crit] 26197#0: *1 stat() "/www/test/index.html" failed (13: Permission denied), client: 195.239.188.28, server: dev.meditat0r.info, request: "GET / HTTP/1.1", host: "meditat0r.info"
...
2013/06/17 11:40:27 [error] 26197#0: *1 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 195.239.188.28, server: dev.meditat0r.info, request: "GET / HTTP/1.1", host: "meditat0r.info"
Базовое разрешение по умолчанию для корневой папки - rwx -----, поэтому никто, кроме root, не может читать / писать из нее. Ты можешь:
а) Переместите папку Dropbox в другое место (предпочтительный способ: создать отдельного пользователя без полномочий root)
б) изменить права доступа к папке / root (никогда этого не делайте!)
Проблема в том, как работают символические ссылки. Символическая ссылка - это, по сути, указатель, говорящий: «контента, который вы ищете, здесь нет, вам нужно найти /root/Dropbox/digital_ocean/test/
вместо ". И это означает, что каталог /root/Dropbox/digital_ocean/test/
должен быть: а) доступен с теми же правами файловой системы, что и веб-каталог, и б) что веб-сервер должен быть настроен для разрешения доступа к этому каталогу. Я не эксперт по nginx, но считаю, что вам понадобится Location
директива для /root/Dropbox/digital_ocean/test/
.
Проверьте свои файлы конфигурации, может быть актуален следующий вариант.
diable_symlinks
http://nginx.org/en/docs/http/ngx_http_core_module.html#disable_symlinks