У меня есть некоторый опыт использования Linux, но ни один из них не использует nginx. Мне было поручено исследовать варианты балансировки нагрузки для сервера приложений.
Я использовал apt-get для установки nginx, и все выглядит нормально.
У меня есть пара вопросов.
В чем разница между папкой sites-available и папкой conf.d. Обе эти папки были включены в настройки конфигурации по умолчанию для nginx. Учебники используют оба. Для чего они и какова лучшая практика?
Для чего используется папка с поддержкой сайтов? Как мне это использовать?
Конфигурация по умолчанию ссылается на пользователя www-data? Должен ли я создать этого пользователя? Как дать этому пользователю оптимальные разрешения для запуска nginx?
linux
ubuntu
nginx
web-server
configuration
Сет Спирман
источник
источник
www-data
это отдельная тема. Большинство операционных систем определяют отдельного пользователя с более низкими разрешениями, который процесс может запускать после привязки к порту 80 от имени пользователя root. Это определено в файле конфигурации. Применяйте основные методы безопасности оттуда; не позволяйте пользователю писать что-либо, к чему веб-сервер не должен писать, не позволяйте другим пользователям писать в файлы, если это не сделано преднамеренно.Ответы:
Папки сайтов - * управляются
nginx_ensite
иnginx_dissite
. Для пользователей Apache httpd, которые находят это с помощью поиска, эквивалентами являетсяa2ensite
/a2dissite
.sites-available
Папка для хранения всех ваших конфигураций ВХост, идет ли они или нет в настоящее время включен.sites-enabled
Папка содержит символические ссылки на файлы в папке сайтов-доступных. Это позволяет вам выборочно отключить vhosts, удалив символическую ссылку.conf.d
выполняет работу, но вы должны переместить что-то из папки, удалить ее или внести в нее изменения, когда вам нужно что-то отключить. Абстракция папок sites- * делает вещи немного более организованными и позволяет управлять ими с помощью отдельных сценариев поддержки.(если вы не похожи на меня и одного из многих администраторов Debian, которые просто управляли символическими ссылками напрямую, не зная о сценариях ...)
источник
sites-available|sites-enabled
это Debian-ism, а не nginx или Apache. Вероятно, это было довольно полезно в прошлом, но его полезность несколько ограничена в эпоху управления конфигурациями и контейнерами.nginx.conf
без потери читабельности. Это противоположно подходу, принятому несколько лет назад, когда серверы обычно хранили десятки веб-сайтов.Я хотел бы добавить к предыдущим ответам, что наиболее важным является не то, как вы называете каталоги (хотя это очень полезное соглашение), а то, что вы фактически вставили
nginx.conf
. Пример конфигурации:Единственная директива, используемая здесь, это include , поэтому между eg
conf.d/
иsites-enabled/
. Нет никакой внутренней разницы .Из документации выше:
Итак, чтобы ответить на исходный вопрос: нет внутренней разницы, и вы можете использовать их наилучшим образом, помня советы из других ответов. И, пожалуйста, не забудьте выбрать «правильный» ответ.
источник
sites-enabled
это было несколько придумано каким-то делением, суетящимся вокруг, как надоедливый посредник. Пойди, возьми nginx из официального источника : ты получишь обновленный продукт, а также избавишься от этой дерьмовой конфигурации.Как правило,
sites-enabled
папка используется для определений виртуальных хостов, аconf.d
используется для конфигурации глобального сервера. Если вы поддерживаете несколько веб-сайтов, т. Е. Виртуальных хостов, то каждый из них получает свой собственный файл, поэтому вы можете очень легко включать и отключать его, перемещая файлы внутрь и наружуsites-enabled
(или создавая и удаляя символические ссылки, что, вероятно, лучшая идея).Используйте
conf.d
для таких вещей, как загрузка модулей, файлы журналов и другие вещи, которые не относятся только к одному виртуальному хосту.Вы должны запустить nginx как пользователь без полномочий root. В некоторых случаях это называется
www-data
, но вы можете назвать его как угодно.Я менее уверен в ответе на этот вопрос (сейчас я не запускаю nginx), но если это что-то похожее на Apache, ответ таков:
www-data
пользователю нужны только разрешения на чтение любых статических файлов (и чтение + выполнение в каталогах). ) которые вы обслуживаете, или разрешения на чтение / выполнение таких вещей, как сценарии CGI, и никаких разрешений где-либо еще.источник
root
и существует какой-либо удаленный компромисс, злоумышленник немедленно получает полный доступ к системе. При работе от имени непривилегированного пользователя административный доступ будет доступен только в сочетании с каким-либо локальным эксплойтом.В чем дело?
Вы должны использовать Debian или Ubuntu, так как зло
sites-available
/sites-enabled
логика не используется вышестоящей упаковкой nginx с http://nginx.org/packages/ .В любом случае, оба реализуются как соглашение о конфигурации с помощью стандартной
include
директивы в/etc/nginx/nginx.conf
.Вот фрагмент
/etc/nginx/nginx.conf
из официального апстрим-пакета nginx от nginx.org:Вот фрагмент
/etc/nginx/nginx.conf
из Debian / Ubuntu :Таким образом, с точки зрения NGINX, единственным отличием будет то, что файлы, которые будут получены,
conf.d
будут обработаны быстрее, и, как таковые, если у вас есть конфигурации, которые незаметно конфликтуют друг с другом, то из нихconf.d
могут иметь приоритет над конфигурациями вsites-enabled
.Лучшая практика
conf.d
.Вы должны использовать
/etc/nginx/conf.d
, как это стандартное соглашение, и должно работать где угодно.Если вам нужно отключить сайт, просто переименуйте имя файла, чтобы больше не иметь
.conf
суффикса, очень легко, просто и безошибочно:sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
Или наоборот, чтобы включить сайт:
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
Избегайте
sites-available
иsites-enabled
любой ценой.Я не вижу абсолютно никакой причины использовать
sites-available
/sites-enabled
:Некоторые люди упоминали
nginx_ensite
иnginx_dissite
сценарии - имена этих сценариев даже хуже, чем остальная часть этого разгрома - но эти сценарии также нигде не найти - они отсутствуют вnginx
пакете даже в Debian (и, вероятно, в Ubuntu) Кроме того, вам не нужен целый нестандартный сторонний скрипт для простого перемещения и / или связывания файлов между двумя каталогами ?!И если вы не используете сценарии (что на самом деле является разумным выбором, как указано выше), то возникает вопрос, как вы управляете сайтами:
sites-available
наsites-enabled
?sites-enabled
?Вышеприведенное может показаться незначительными проблемами до тех пор, пока несколько человек не начнут управлять системой, или пока вы не примете быстрое решение, только чтобы забыть об этом спустя месяцы или годы…
Что приводит нас к:
Безопасно ли удалять файл из
sites-enabled
? Это мягкая ссылка? Жесткая ссылка? Или единственная копия конфигурации? Яркий пример конфигурации ада.Какие сайты были отключены? (С
conf.d
помощью поиска обращайтесь к файлам, не заканчивающимся на.conf
-find /etc/nginx/conf.d -not -name "*.conf"
или используйтеgrep -v
.)Не только все вышеперечисленное, но также обратите внимание на специальную
include
директиву, используемую Debian / Ubuntu/etc/nginx/sites-enabled/*
- для суффикса имени файла не указаноsites-enabled
, в отличие отconf.d
./etc/nginx/sites-enabled
, и выemacs
создадите файл резервной копии, напримерdefault~
, вдруг у вас будет и то,default
и другое вdefault~
качестве активной конфигурации, которая, в зависимости от используемых директив, может даже не дать Вы предупреждаете о каких-либо предупреждениях и вызываете длительный сеанс отладки. (Да, это случилось со мной; это было во время хакатона, и я был полностью озадачен, почему мой конф не работал.)Таким образом, я убежден, что
sites-enabled
это чистое зло!источник
sites-enabled
было достаточно злым!sites-enabled
то время как другой решит отключить его, удалив его, возможно, думая, что это просто символическая ссылка, требующая последующий дамп памяти кучи nginx для восстановления файла conf: stackoverflow.com/q/45852224/1122270sites-available
иsites-enabled
; важно иметь возможность подготовить конфигурационные файлы вне «живого» каталога раскладки так, чтобы в случае перезагрузки или перезапуска nginx он не брал частичные конфигурационные файлы. Также может быть полезно сохранить конфигурационные файлы, которые больше не используются. Создание символических ссылок не является особенно сложной задачей, если у вас достаточно опыта, чтобы в первую очередь управлять nginx, IMO.USR1
который повторно открывает журналы, не перезагружает conf.) Я считаю, что ваши комментарии к "символическим ссылкам" на символическую ссылку неверно направлены - проблема заключается в согласованности, которая имеет мало общего с опытом.