Назад | Перейти на главную страницу

Мягкая ссылка на сайт

У меня установлен 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