Как решить проблему (40: Слишком много уровней символических ссылок) на экземпляре AWS EC2 с Ubuntu 10.04

Вопрос или проблема

В моем экземпляре EC2 Ubuntu 18.04 я создал файл django.conf в /etc/nginx/sites-available

Файл .conf выглядит так:

server {
        listen 80;
        server_name *[url_name]*;

        location / {
                include proxy_params;
                proxy_pass http://unix:/home/ubuntu/ZTS-JOBCARDS/app.sock;
        }

}

И когда я выполнил sudo nginx -t перед тем, как попытаться связать файлы с /etc/nginx/sites-enabled/, результат оказался положительным

Однако, после того, как я связал файлы таким образом: sudo ln -s django.conf /etc/nginx/sites-enabled/

Команда nginx -t возвращает следующую ошибку;

nginx: [emerg] open() “/etc/nginx/sites-enabled/django.conf” failed
(40: слишком много уровней символических ссылок) в /etc/nginx/nginx.conf:62
nginx: тест конфигурационного файла /etc/nginx/nginx.conf не прошел

Что могло вызвать эту ошибку и есть ли какие-нибудь руководства по ее исправлению?

Вы связали django.conf с самими собой. В файле нет данных, только ссылка на сам себя.

Эта команда,

ln -s django.conf /etc/nginx/sites-enabled/    # Неправильно

создает символическую ссылку в /etc/nginx/sites-enabled с именем django.conf, указывающую на django.conf. Вы можете увидеть это с помощью ls -l /etc/nginx/sites-enabled/django.conf.

То, что вы намеревались сделать, это создать символическую ссылку в /etc/nginx/sites-enabled с именем django.conf, указывающую на относительное местоположение, ../sites-available/django.conf

cd /etc/nginx/sites-enabled && ln -s ../sites-available/django.conf

Если вы хотите избежать изменения текущего каталога, оберните пару команд в скобки

( cd … && ln … )

Использование принятого ответа оставило меня с той же ошибкой (слишком много уровней символических ссылок). Мне пришлось использовать два абсолютных пути, чтобы ссылка работала.

sudo ln -s /etc/nginx/sites-available/siteconfig /etc/nginx/sites-enabled/siteconfig

.

Ответ или решение

Решение проблемы "Too many levels of symbolic links" в Ubuntu 10.04 на AWS EC2

При работе с конфигурацией Nginx на Ubuntu, вы можете столкнуться с ошибкой "Too many levels of symbolic links" (Ошибка 40). Эта ошибка относится к неправильной настройке символических ссылок, которая происходит, когда ссылка указывает на себя или образует бесконечный цикл.

Проблема

В приведенном вами сценарии вы создали конфигурационный файл django.conf в директории /etc/nginx/sites-available, а затем выполнили команду:

sudo ln -s django.conf /etc/nginx/sites-enabled/

Эта команда создала символическую ссылку django.conf, указывающую на сам файл django.conf, находящийся в директории /etc/nginx/sites-enabled. В результате, при выполнении команды nginx -t возникает ошибка, поскольку Nginx не может правильно интерпретировать такую ссылку, что приводит к бесконечному циклу самой ссылки.

Решение

Для устранения этой проблемы вам необходимо создать символическую ссылку на правильный путь. Выполните следующие шаги:

  1. Удалите неправильную ссылку:

    sudo rm /etc/nginx/sites-enabled/django.conf
  2. Создайте корректную символическую ссылку:

    Вам следует использовать относительный путь к файлу django.conf в директории sites-available. Вы можете сделать это двумя способами:

    • Первый способ: Измените директорию и создайте ссылку:
    cd /etc/nginx/sites-enabled && sudo ln -s ../sites-available/django.conf
    • Второй способ: Используйте полный путь к файлу:
    sudo ln -s /etc/nginx/sites-available/django.conf /etc/nginx/sites-enabled/django.conf
  3. Проверьте конфигурацию Nginx:

    После создания правильной ссылки, выполните команду для проверки конфигурации:

    sudo nginx -t

    Если все сделано правильно, вы увидите сообщение, указывающее на успешную проверку конфигурации.

  4. Перезапустите Nginx:

    Если проверка прошла успешно, перезапустите сервис Nginx, чтобы применить изменения:

    sudo systemctl restart nginx

Заключение

Эта ошибка может быть легко исправлена правильным пониманием работы символических ссылок в Linux. Убедитесь, что вы всегда создаете ссылки на нужные пути, чтобы избежать ошибок, связанных с возвратом на одну и ту же ссылку. Следуя вышеуказанным шагам, вы сможете устранить проблему "Too many levels of symbolic links" и убедиться, что ваш сервер Nginx работает как положено.

Оцените материал
Добавить комментарий

Капча загружается...