So führen Sie mehrere Nginx-Instanzen an verschiedenen Ports aus

8

Ich möchte, dass mehrere Nginx-Instanzen auf meinem Server an separaten Ports ausgeführt werden (z. B. führt ein Benutzer Nginx an Port 2345 und ein anderer Benutzer an Port 2346 aus). Bisher war es mir gelungen, den Server an den angegebenen Ports zu kompilieren und auszuführen. Ich stoße jedoch auf ein seltsames Problem: Wenn ich domain1.com:2345 oder domain2.com:2346 besuche, erhalte ich die richtige (200) Antwort, aber wenn ich domain1.com oder domain2.com besuche (ohne Angabe des Ports) I. bekomme überhaupt keine Antwort.

Jede Hilfe / Anhaltspunkte, um herauszufinden, wie dies eingerichtet werden soll, wäre sehr dankbar.

Edvinas
quelle
Müssen es unterschiedliche Benutzer sein? Können Sie nicht einfach virtuelle Hosts verwenden, um dies zu tun, und die ListenDirektive verwenden, um Nginx in verschiedenen Ports abhören zu lassen? Erklären Sie, was genau Sie erreichen möchten.
Coredump

Antworten:

12

Okay, ich habe eine Lösung gefunden.

Ich habe einen 'Master'-Server als Root auf Port 80 ausgeführt. Von dort aus füge ich Serverblöcke für jeden Server an ihren Ports mit einer proxy_pass-Direktive zum Server hinzu.

  server {
    listen      80;
    charset     utf-8;
    server_name domain1.com;
    location / {
        proxy_pass http://domain1.com:2345;
  }
  server {
    listen      80;
    charset     utf-8;
    server_name domain2.com;
    location / {
        proxy_pass http://domain2.com:2346;
  }

Vielleicht gibt es eine elegantere Lösung, aber dies scheint gut zu funktionieren.

Edvinas
quelle
3

Webbrowser wählen automatisch Port 80 aus, wenn Sie keinen Port angeben. Aus Ihrer Erklärung geht hervor, dass keine der beiden Instanzen Port 80 überwacht.

Möglicherweise möchten Sie stattdessen sowohl domain1.com als auch domain2.com von derselben Nginx-Instanz aus mithilfe virtueller Hosts bereitstellen .

adamse
quelle
Danke für den Tipp. Die Port 80-Informationen waren ein guter Anfang ... Ich wollte den Benutzern jedoch die Möglichkeit geben, ihre eigenen Nginx-Instanzen auf ihren Konten und nicht nur auf virtuellen Hosts zu konfigurieren.
Edvinas
1

Wenn Sie mehrere IP-Adressen für Ihren Server haben können, können Sie mehrere Nginx-Instanzen auf Port 80 ausführen, sofern Sie in der listenDirektive unterschiedliche IP-Adressen angeben .

Ein Beispiel:

In erster Linie:

server {
  listen a.b.c.e:80
  ...
}

Auf der anderen Seite

server {
  listen f.g.h.i:80
  ...
}

Dies wird jedoch zu einem Schmerz, wenn Sie mehr als nur ein paar Benutzer haben. Auch mehrere öffentliche IP-Adressen sind möglicherweise schwer zu bekommen.

adamse
quelle