nginx отсутствует каталог сайтов, доступных

190

Я установил Nginx на Centos 6 и пытаюсь настроить виртуальные хосты. Проблема в том, что я не могу найти /etc/nginx/sites-availableкаталог.

Есть ли что-то, что мне нужно сделать, чтобы создать это? Я знаю, что Nginx запущен и работает, потому что я могу просматривать его.

Fr0ntSight
источник
Если вы хотите разделить один большой конфигурационный файл на более мелкие, вы можете использовать мой скрипт для его разделения: stackoverflow.com/a/38635284/1069083
rubo77

Ответы:

354

Ну, я думаю, что nginx сам по себе не имеет этого в своей настройке, потому что пакет, поддерживаемый Ubuntu, делает это в качестве соглашения, имитирующего настройку Apache Debian. Вы можете создать его самостоятельно, если хотите эмулировать ту же настройку.

Создайте, /etc/nginx/sites-availableа /etc/nginx/sites-enabledзатем отредактируйте httpблок внутри /etc/nginx/nginx.confи добавьте эту строку

include /etc/nginx/sites-enabled/*;

Конечно, все файлы будут внутри sites-available, и вы создадите для них символическую ссылку sites-enabledдля тех, кого вы хотите включить.

Мухаммед Абу Шади
источник
23
У родственников RedHat (например, Fedora и Centos) нет такой функции, как Debian / Ubuntu. Это легко скопировать, как сказал @Mohammad, однако отсутствие хороших настроек по умолчанию сбивает с толку новичков.
MGP
36
Боже, я не могу сказать, сколько поисков я сделал, чтобы понять это. Я использую Amazon Linux AMI выпуск 2014.03. Эти каталоги не создаются автоматически, если вы устанавливаете nginx из файлов rpm (будь то nginx 1.6.2 или nginx 1.7.5), но многие примеры конфигурации nginx ссылаются на них ... заставляя задуматься, правильно ли был установлен nginx или нет.
so_mv
1
Круто спасибо, как насчет символической ссылки? Мой синтаксис правильный? Похоже, он не обнаруживается оператором включения.
нули и единицы
7
Я исправил это, запустил заново и создал сим-ссылку так: sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/test.confне уверен, почему полный путь имел значение: /
нули и единицы
1
Огромное спасибо. Я собрал nginx из исходного кода и не понял, что это сделал Ubuntu.
Шон Норвуд
66

Если вы предпочитаете более прямой подход, который НЕ связывает символическую ссылку между /etc/nginx/sites-availableи /etc/nginx/sites-enabled, сделайте следующее:

  1. Найдите свой файл nginx.conf. Скорее всего в/etc/nginx/nginx.conf
  2. Найдите блок http.
  3. Где- include /etc/nginx/conf.d/*.conf;нибудь в блоке http, write Это говорит nginx, что нужно извлекать любые файлы в conf.dкаталоге, который заканчивается .conf. (Я знаю: странно, что в каталоге может быть .буква.)
  4. Создайте conf.dкаталог, если он еще не существует (по пути на шаге 3). Обязательно дайте ему правильное разрешение / право собственности. Скорее всего root или www-данные.
  5. Переместите или скопируйте ваши отдельные файлы конфигурации (как и у вас /etc/nginx/sites-available) в каталог conf.d.
  6. Перезагрузите или перезапустите nginx.
  7. Ешьте мороженое.

Любые .confфайлы, которые вы поместите в этот conf.dкаталог, станут активными, если вы перезагрузите / перезапустите nginx после.

Примечание. При желании вы можете использовать метод conf.dand sites-enabled+ sites-availableодновременно. Мне нравится тестировать на моем Dev Box с помощью conf.d. Чувствуется быстрее, чем символические и несимвольные ссылки.

elbowlobstercowstand
источник
13
Смысл символической ссылки «беспорядок» заключается в том, что вы можете сохранить файлы конфигурации и при этом очень легко отключить виртуальные хосты. Если вы используете свой подход, вы должны удалить файлы из файла conf.d, если вы хотите отключить сайт, который, я думаю, не менее беспорядочный, чем удобное удаление символической ссылки.
bviktor
@bviktor Я слышу тебя. Я на самом деле использую оба способа. Я просто посчитал более утомительным [при тестировании конфигов] перебегать назад и вперед между каталогами с доступными сайтами и с включенными сайтами. В моей производственной среде я планирую использовать символическую ссылку.
elbowlobstercowstand
1
Да, я согласен, набирать ln -s ../sites-available/...довольно утомительно при быстром тестировании, но в конечном итоге это удобно и проще в управлении :)
bviktor
@bviktor Так благодарен за способность нажимать вкладку в терминале при написании имени пути и смотреть, как автозаполнение делает свое дело. Некоторое время не знал об этом, пока не посмотрел видео с кем-то, кто его использовал. Я думал, что они напечатали в 300 wpm! Тогда я понял. :)
elbowlobstercowstand
12
@bvktor Включаются только сайты с расширением .conf. Если вы не хотите, чтобы сайт был включен, просто добавьте расширение .disabled в файл configuratoin сайта. Это стандартное соглашение в CentOS / Apache, и оно будет применяться и к Nginx.
SenG
0

Я попробовал sudo apt установить nginx-full. Вы получите все необходимые пакеты.

Амит Шреста
источник