nginx brakuje katalogu dostępnych stron

190

Zainstalowałem Nginx na Centos 6 i próbuję skonfigurować wirtualne hosty. Problemem jest to, że nie mogę znaleźć /etc/nginx/sites-availablekatalogu.

Czy muszę coś zrobić, aby go stworzyć? Wiem, że Nginx jest uruchomiony, ponieważ mogę go przeglądać.

Fr0ntSight
źródło
Jeśli chcesz podzielić jeden duży plik konfiguracyjny na mniejsze, możesz użyć mojego skryptu, aby go podzielić: stackoverflow.com/a/38635284/1069083
rubo77

Odpowiedzi:

354

Cóż, myślę, że nginx sam w sobie nie ma tego w swojej konfiguracji, ponieważ pakiet obsługiwany przez Ubuntu robi to jako konwencja naśladująca konfigurację Apache Debiana. Możesz go stworzyć sam, jeśli chcesz emulować tę samą konfigurację.

Utwórz, /etc/nginx/sites-availablea /etc/nginx/sites-enablednastępnie edytuj httpblok wewnątrz /etc/nginx/nginx.confi dodaj ten wiersz

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

Oczywiście wszystkie pliki będą w środku sites-available, a Ty utworzysz dla nich dowiązanie symboliczne sites-enableddla tych, których chcesz włączyć.

Mohammad AbuShady
źródło
23
Krewni RedHata (tj. Fedora i Centos) nie mają tej funkcji po wyjęciu z pudełka, takiej jak Debian / Ubuntu. Łatwo skopiować, jak powiedział @Mohammad, jednak brak dobrych ustawień domyślnych jest mylący dla początkujących.
MGP
36
Boże, nie mogę powiedzieć, ile wyszukiwań przeprowadziłem, żeby to rozgryźć. Używam Amazon Linux AMI wydanie 2014.03. Te katalogi nie są tworzone automatycznie, jeśli zainstalujesz nginx z plików rpm (czy to nginx 1.6.2 lub nginx 1.7.5), ale wiele przykładów konfiguracji nginx odwołuje się do nich ... powodując, że zastanawiasz się, czy twój nginx został poprawnie zainstalowany, czy nie.
so_mv
1
Fajne dzięki, a co z dowiązaniem symbolicznym? Czy moja składnia jest poprawna? Wydaje się, że nie można go znaleźć w instrukcji include.
zera i
7
Naprawiłem to, zacząłem od nowa i utworzyłem link do syma w ten sposób: sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/test.confnie jestem pewien, dlaczego pełna ścieżka ma znaczenie: /
Zera-i-
1
Dziękuję bardzo. Zbudowano nginx ze źródła i nie zdawałem sobie sprawy, że Ubuntu to zrobił.
Sean Norwood,
66

Jeśli wolisz bardziej bezpośrednie podejście, takie, które NIE zadziała z symlinkowaniem pomiędzy /etc/nginx/sites-availablei /etc/nginx/sites-enabled, wykonaj następujące czynności:

  1. Znajdź plik nginx.conf. Prawdopodobnie o/etc/nginx/nginx.conf
  2. Znajdź blok http.
  3. Gdzieś w bloku http napisz. include /etc/nginx/conf.d/*.conf;To mówi nginxowi, aby pobierał dowolne pliki z conf.dkatalogu, które kończą się w .conf. (Wiem: to dziwne, że katalog może .w nim mieć ).
  4. Utwórz conf.dkatalog, jeśli jeszcze nie istnieje (zgodnie ze ścieżką w kroku 3). Pamiętaj, aby nadać mu odpowiednie uprawnienia / prawa własności. Prawdopodobne dane root lub www.
  5. Przenieś lub skopiuj osobne pliki konfiguracyjne (tak jak masz /etc/nginx/sites-available) w katalogu conf.d.
  6. Załaduj ponownie lub uruchom ponownie nginx.
  7. Zjedz lody.

Wszelkie .confpliki, które odtąd umieszczasz w conf.dkatalogu, staną się aktywne, dopóki przeładujesz / uruchomisz ponownie nginx.

Uwaga: Można użyć conf.di sites-enabled+ sites-availablemetody równocześnie, jeśli chcesz. Lubię testować na moim urządzeniu deweloperskim conf.d. Czuje się szybciej niż symlinkowanie i rozłączanie.

elbowlobstercowstand
źródło
13
Problem „bałaganu” w symlinkingu polega na tym, że można zachować pliki konfiguracyjne i nadal bardzo łatwo wyłączać wirtualne hosty. Jeśli używasz tego podejścia, musisz przenieść pliki z conf.d, aby wyłączyć witrynę, która moim zdaniem nie jest mniej skomplikowana niż wygodne usuwanie dowiązania symbolicznego.
bviktor
@bviktor słyszę cię. Właściwie używam obu sposobów. Po prostu odkryłem, że bardziej żmudne [podczas testowania konfiguracji] jest odbijanie się pomiędzy dostępnymi i obsługiwanymi stronami katalogów. W środowisku produkcyjnym planuję używać symlinkowania.
elbowlobstercowstand
1
Tak, zgadzam się, wpisywanie ln -s ../sites-available/...jest dość żmudne podczas szybkiego testowania rzeczy, ale na dłuższą metę jest poręczne i łatwiejsze do zarządzania :)
bviktor
@bviktor Tak wdzięczny za możliwość naciśnięcia klawisza Tab w terminalu podczas pisania nazwy ścieżki i oglądania automatycznego uzupełniania. Nie wiedziałem o tym przez jakiś czas, dopóki nie obejrzałem filmu z kimś, kto go używa. Myślałem, że wpisali 300 wpm! Potem złapałem. :)
elbowlobstercowstand
12
@bvktor Uwzględniane są tylko strony z rozszerzeniem .conf. Jeśli nie chcesz, aby witryna była włączona, po prostu dodaj rozszerzenie .disabled do pliku konfiguracji witryny. Jest to standardowa konwencja w CentOS / Apache i będzie miała zastosowanie również do Nginx.
SenG
0

Próbowałem sudo apt install nginx-full. Otrzymasz wszystkie wymagane pakiety.

Amit Shrestha
źródło