nginx fehlende Sites-verfügbares Verzeichnis

187

Ich habe Nginx auf Centos 6 installiert und versuche, virtuelle Hosts einzurichten. Das Problem, das ich habe, ist, dass ich das /etc/nginx/sites-availableVerzeichnis scheinbar nicht finden kann .

Muss ich etwas tun, um es zu erstellen? Ich weiß, dass Nginx läuft, weil ich es durchsuchen kann.

Fr0ntSight
quelle
Wenn Sie eine große Konfigurationsdatei in kleinere aufteilen möchten, können Sie sie mit meinem Skript aufteilen: stackoverflow.com/a/38635284/1069083
rubo77

Antworten:

353

Nun, ich denke, Nginx selbst hat das nicht in seinem Setup, weil das von Ubuntu gepflegte Paket dies als Konvention tut, um Debians Apache-Setup nachzuahmen. Sie können es selbst erstellen, wenn Sie dasselbe Setup emulieren möchten.

Erstellen /etc/nginx/sites-availableund /etc/nginx/sites-enabledbearbeiten Sie den httpBlock im Inneren /etc/nginx/nginx.confund fügen Sie diese Zeile hinzu

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

Natürlich befinden sich alle Dateien im Inneren sites-available, und Sie würden einen Symlink für sie im Inneren sites-enabledfür diejenigen erstellen , die aktiviert werden sollen.

Mohammad AbuShady
quelle
23
RedHat-Verwandte (dh Fedora und Centos) haben diese Funktion nicht sofort wie Debian / Ubuntu. Es ist einfach zu kopieren, wie @Mohammad sagte, aber keine guten Standardeinstellungen zu haben, ist für Neulinge verwirrend.
MGP
36
Gott, ich kann nicht sagen, wie viele Suchen ich durchgeführt habe, um das herauszufinden. Ich verwende Amazon Linux AMI Release 2014.03. Diese Verzeichnisse werden nicht automatisch erstellt, wenn Sie nginx aus den RPM-Dateien installieren (ob nginx 1.6.2 oder nginx 1.7.5), aber viele Nginx-Konfigurationsbeispiele verweisen auf diese ... Sie fragen sich, ob Ihr nginx korrekt installiert wurde oder nicht.
so_mv
1
Cool danke, wie wäre es mit dem Symlink? Ist meine Syntax korrekt? Es scheint nicht von der include-Anweisung gefunden zu werden.
Nullen und Einsen
7
Ich habe es behoben, neu gestartet und einen Sym-Link wie sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/test.conffolgt erstellt: Ich bin mir nicht sicher, warum der vollständige Pfad einen Unterschied gemacht hat: /
Nullen und Einsen
1
Ich danke dir sehr. Erstellte Nginx aus dem Quellcode und wusste nicht, dass Ubuntu dies tat.
Sean Norwood
66

Wenn Sie einen direkteren Ansatz bevorzugen, der sich NICHT auf die Verknüpfung zwischen /etc/nginx/sites-availableund auswirkt /etc/nginx/sites-enabled, gehen Sie wie folgt vor:

  1. Suchen Sie Ihre Datei nginx.conf. Wahrscheinlich bei/etc/nginx/nginx.conf
  2. Suchen Sie den http-Block.
  3. Schreiben Sie irgendwo im http-Block. include /etc/nginx/conf.d/*.conf;Dies weist nginx an, alle Dateien im conf.dVerzeichnis abzurufen, die auf enden .conf. (Ich weiß: Es ist seltsam, dass ein Verzeichnis ein enthalten kann ..)
  4. Erstellen Sie das conf.dVerzeichnis, falls es noch nicht vorhanden ist (gemäß dem Pfad in Schritt 3). Stellen Sie sicher, dass Sie die richtigen Berechtigungen / Eigentumsrechte haben. Wahrscheinlich Root- oder WWW-Daten.
  5. Verschieben oder kopieren Sie Ihre separaten Konfigurationsdateien (genau wie in /etc/nginx/sites-available) in das Verzeichnis conf.d.
  6. Nginx neu laden oder neu starten.
  7. Iss eine Eistüte.

Alle .confDateien, die Sie von nun an in das conf.dVerzeichnis stellen, werden aktiv, solange Sie nginx danach neu laden / neu starten.

Hinweis: Wenn Sie möchten, können Sie die Methode conf.dund sites-enabled+ sites-availablegleichzeitig verwenden. Ich teste gerne auf meiner Entwicklungsbox mit conf.d. Fühlt sich schneller an als Symlinking und Unsymlinking.

Ellenbogenlobstercowstand
quelle
13
Der Sinn der Verknüpfung "Chaos" ist, dass Sie Konfigurationsdateien beibehalten und virtuelle Hosts dennoch sehr einfach deaktivieren können. Wenn Sie Ihren Ansatz verwenden, müssen Sie die Dateien aus conf.d verschieben, wenn Sie eine Site deaktivieren möchten, die meiner Meinung nach nicht weniger chaotisch ist als das bequeme Löschen eines Symlinks.
bviktor
@bviktor Ich höre dich. Ich benutze eigentlich beide Wege. Ich fand es einfach mühsamer [beim Testen von Konfigurationen], zwischen den verfügbaren und den aktivierten Sites hin und her zu springen. In meiner Produktionsumgebung plane ich die Verwendung von Symlinking.
Ellenbogenlobstercowstand
1
Ja, ich stimme zu, das Eingeben von ln -s ../sites-available/...ist ziemlich mühsam, wenn man schnell
Dinge
@bviktor So dankbar für die Möglichkeit, beim Schreiben eines Pfadnamens die Tabulatortaste im Terminal drücken zu können und zu beobachten, wie die automatische Vervollständigung funktioniert. Ich wusste eine Weile nichts davon, bis ich mir ein Video mit jemandem ansah, der es benutzte. Ich dachte, sie tippten mit 300 wpm! Dann fing ich an. :)
Ellenbogenlobstercowstand
12
@bvktor Es werden nur Websites mit der Erweiterung .conf aufgenommen. Wenn Sie nicht möchten, dass eine Site aktiviert wird, fügen Sie der Site-Konfigurationsdatei einfach die Erweiterung .disabled hinzu. Dies ist die Standardkonvention in CentOS / Apache und gilt auch für Nginx.
SenG