Mehrere Websites auf Nginx & Websites verfügbar

72

Bei der Basisinstallation von nginx enthält Ihr sites-availableOrdner nur eine Datei:default

Wie funktioniert der sites-availableOrdner und wie würde ich ihn verwenden, um mehrere (separate) Websites zu hosten?

Kristian
quelle

Antworten:

86

Um einen weiteren Ansatz hinzuzufügen, können Sie für jede virtuelle Domain oder Site, die Sie hosten, eine separate Datei verwenden. Sie können eine Kopie der Standardeinstellung als Ausgangspunkt für jede Site verwenden und für jede Site anpassen.
Erstellen Sie dann Symlinks in Sites, die aktiviert sind. Auf diese Weise können Sie Websites hoch- und runterfahren, indem Sie einfach einen Symlink hinzufügen oder entfernen und ein Service-Nginx-Reload ausgeben.

Sie können kreativ werden und diese Methode verwenden, um Websites während der Site-Wartung auf eine Seite im Wartungsmodus umzuleiten.

Die Struktur sieht also so aus:

/sites-available/ (you can use obvious file names like this)
| 
|-> a.mysite.com
|-> b.mysite.com
|-> someOtherSite.com

/sites-enabled/ (these are just symlinks to the real files in /sites-available)
| 
|-> a.mysite.com
|-> b.mysite.com

Beachten Sie, dass sites-enabledder dritte Eintrag someOtherSite.comoffline ist , da nur die ersten beiden Einträge die einzigen miteinander verknüpften Elemente sind .

Carlos
quelle
30

Wenn Sie sich ansehen nginx.conf, finden Sie eine includeDirektive, die alle Dateien aus dem sites-enabledVerzeichnis enthält. In diesem Verzeichnis werden Symlinks zu Konfigurationsdateien gespeichert sites-available, um Teile Ihrer Konfiguration bequem ein- und ausschalten zu können.

Wie Sie sehen können, gibt es bei diesen Verzeichnissen keine Magie.

Wenn Sie mehrere Websites hosten möchten, sollten Sie mehrere serverBlöcke und / oder server_nameAnweisungen verwenden. Offizielle Tutorials finden Sie hier: Servernamen und Wie Nginx eine Anfrage verarbeitet .

VBart
quelle
19

Sie verknüpfen die Standarddatei von verfügbaren Sites mit aktivierten Sites. Anschließend ändern Sie die verfügbare Site so, dass zwei Serverblöcke mit jeweils einem anderen Servernamen enthalten sind. siehe folgendes. Dies setzt voraus, dass Sie Domains mit den Namen example.com und example2.com benötigen. Sie hätten Ihre @records auch auf die IP-Adresse des Servers verwiesen, auf dem Sie nginx installiert haben.

Verknüpfen Sie die verfügbare Site mit einer aktivierten Site

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

Bearbeiten Sie die Datei mit dem Editor Ihrer Wahl (vim für mich)

sudo vi /etc/nginx/sites-available/default

Hier ist der Inhalt von nginx conf, vorausgesetzt, Sie führen Web-Apps auf den Ports 4567 und 4568 aus.

server {

    server_name www.example.com

    location / {
        proxy_pass http://localhost:4567/;
    }

}


server {

    server_name www.example2.com

    location {
        proxy_pass http://localhost:4568/;
    }

}
jmontross
quelle