Also benutze ich Digital Ocean und Nginx. Ich möchte mehrere Websites (meine Projekte) hosten, aber keine Domain für jede kaufen.
Gibt es eine Möglichkeit, mehrere Websites auf Nginx und Digital Ocean zu hosten, während Sie mit dieser einen IP auf sie zugreifen?
X.Y.Z.W/foo
,X.Y.Z.W/bar
)? Warum können Sie keine Domains für sie bekommen? (Sie können dieselbe IP mehreren Domains zuweisen)?Antworten:
Es gibt zwei Möglichkeiten, dies zu erreichen. Entweder machen Sie alles nach IP-Adresse mit Unterordnern oder Sie müssen eine Domain kaufen und dann mehrere Subdomains auf dieser Domain haben (Subdomains sollten nichts kosten, wenn Sie die Domain kaufen, aber fragen Sie Ihren Registrar).
Ich rate von der IP-Adressmethode ab, nur weil es sehr böse ist, sich IP-Adressen merken zu müssen, und wenn Sie versuchen, Informationen an andere weiterzugeben, haben Sie auch das gleiche Problem, dass sich andere die IP-Adresse merken müssen.
Die One-IP-Methode für viele Unterordner ohne Domain-Namen
Auf der anderen
nginx
Seite müssen wir diesbezüglich einen "bösen" Ansatz verfolgen - eine IP-Adresse, viele Dokumentenspeicherorte und Unterordner. Dies ist ein sehr, sehr böser Ansatz und kann bei einigen Web-Frameworks zu vielen Problemen führen.Angenommen, eine Standardinstallation wird
nginx
als Basis für die Repositorys verwendet, dann müssen wir eine Standortkonfiguration erstellen, um jede Anforderung eines Projekt-Unterverzeichnisses zu verarbeiten. Dann müssen wir es an der richtigen Stelle symbolisieren.Erstellen Sie
/etc/nginx/sites-available/my-projects
mit folgendem Befehl (verwenden Sie diesen Befehl als Vorlage / Leitfaden): Es werden drei Projekte mit statischem HTML und keinen dynamischen Webanwendungen in PHP oder Python oder ähnlichem vorausgesetzt. Sie können die einzelnen Standortblöcke kopieren und neue Standorte entsprechend erstellen Server-IP ist1.2.3.4
).Jetzt ersetzen wir die Standardkonfiguration (entfernen sie) und fügen unsere hinzu:
Und dann starte den
nginx
Dienst neu:Der Ansatz mit einer Domäne und mehreren Unterdomänen.
Für jeden
nginx
server {}
Block in der Konfiguration müssen Sie den Servernamen definieren und wahrscheinlich einen vierten Serverblock als "catch all" für andere Anforderungen festlegen.Mit dem obigen Szenario haben wir zwei Teile: Domänen und Unterdomänen und die Serverkonfiguration.
(1): DNS-Konfiguration
Richten Sie Ihren DNS auf Ihrem Host so ein, dass für die DNS-Einträge Folgendes zutrifft:
(2): NGINX-Konfiguration auf dem Server (1.2.3.4)
Nun zu Ihren
nginx
Konfigurationen. Ich gehe davon aus, dass Sie die Standard-Nginx-Setups und die Pakete aus den Repositorys haben werden (ich werde 14.04 als Basisbeispiel verwenden)./etc/nginx/sites-available
Zuerst werden vier Konfigurationsdateien angelegt . Möglicherweise müssen Siesudo
beim Erstellen dieser Dateien verwenden, da der betreffende Ordner im Besitz von istroot
./etc/nginx/sites-available/catch-all
- Dies ist der Haken für alle nicht gültigen Domains. Ich mag es, den http-Fehlercode 410 (GONE) zurückzugeben.Als nächstes richten wir die Konfiguration für Ihre Standorte / Projekte ein. Ich gehe jedoch davon aus, dass alle Dateien statisch sind. Jedes dieser Verfahren setzt voraus, dass Sie für jedes Projekt auch auf dem Server unterschiedliche Webverzeichnisse haben (unterschiedliche "Dokumentenstammverzeichnisse").
/etc/nginx/sites-available/proj1.evil-projects.net
:/etc/nginx/sites-available/proj2.evil-projects.net
:/etc/nginx/sites-available/proj3.evil-projects.net
:Wir müssen dann die 'Standard'-Konfiguration entfernen
/etc/nginx/sites-enabled
und unsere eigene hinzufügen. Auchsudo
hier wird gebraucht.Und dann starten wir den
nginx
Prozess neu:Sobald sich DNS verbreitet, funktionieren die Sites wie sie sollten.
quelle