Domain und Subdomains mit Nginx vom selben Server

Domain und Subdomains mit Nginx vom selben Server

Hier gibt es mehr Entwicklung als Betrieb. Situation: Ich habe einen Heimserver (Fedora), auf dem einige Anwendungen mit Podman laufen. Einige davon sind Datenbankdienste und verwenden verschiedene Ports. Kann das in NGINX funktionieren?

  • Hosten Sie Ihre persönliche Site über domain.dev. Sie lebt weiter localhost:8080.
  • hosten Sie das Fedora-Cockpit über cocking.domain.dev. Es lebt weiter localhost:9090.
  • hosten die anderen Anwendungen über eigene Subdomänen mit ihren verschiedenen Ports, db.domain.dev:30001die auf liegen localhost:30001. Ich glaube, ich habe insgesamt 15 Ports verwendet.

Cockpit, denke ich, kann ich machen (es verwendet WebSockets)

map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}
upstream websocket {
  server localhost:9090;
}
server {
  server_name cockpit.domain.dev;
  location / {
    proxy_pass http://websocket;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header Origin https://$host;
  }
}

Kann ich einfach eine weitere location /Domäne hinzufügen domain.dev?

Ich kann mein Modem öffnen, um alle erforderlichen Ports weiterzugeben. Wenn möglich, habe ich später eine Folgefrage zu Certbot, Google Domains und Google DNS. Ichkann nichtbringen Sie das zum Laufen.

Antwort1

Bedenken Sie zunächst, dass nginx ein HTTP-Proxy ist und Sie Anfragen daher nur über das HTTP(S)-Protokoll weiterleiten können.

Zweitens glaube ich, dass ich Ihrem Localhost-Port einen anderen Port zuordnen muss, da das Betriebssystem nicht zulässt, dass zwei verschiedene Anwendungen und Prozesse denselben Port binden.

Die folgende Konfiguration sollte für Sie funktionieren (beachten Sie, dass ich Port 18080 auf localhost:8080 und Port 19090 auf localhost:9090 zuordne):

server {
    listen 18080;

    server_name domain.dev;

    access_log /var/log/nginx/domain.dev-access.log;
    error_log /var/log/nginx/domain.dev-error.log error;
    
    location / {
      proxy_pass http://localhost:8080;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    listen 19090;

    server_name cockpit.domain.dev;

    access_log /var/log/nginx/cockpit.domain.dev-access.log;
    error_log /var/log/nginx/cockpit.domain.dev-error.log error;
    
    location / {
      proxy_pass http://localhost:9090;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
    }
}

verwandte Informationen