Nginx-Weiterleitung nach Servernamen

Nginx-Weiterleitung nach Servernamen

Ich habe mehrere Docker-Dienste, die http (und https) bereitstellen. Der interne http-Port (80) wird auf Docker-Ebene einem anderen Port zugeordnet, sodass er auf dem Host erreichbar ist. Und das funktioniert einwandfrei:

curl localhost:1234

Bringt mich zu meinem HTTP-Dienst im Container.

Nun möchte ich, dass dies über einen DNS erreichbar ist, ohne dass ich den Port angeben muss (ich möchte die Clients vor dieser Portzuordnung schützen). Ich möchte nginx verwenden, um Anfragen an http://myserver1-> weiterzuleiten http://localhost:1234.

Kann nginx auf diese Weise konfiguriert werden? Kann es für mehrere Weiterleitungen wie folgt konfiguriert werden:

http://myserver1  --> http://localhost:1234
http://myserver2  --> http://localhost:1235
...

Antwort1

Ja, kann es.

Die Option server_name wird verwendet, um die beste Übereinstimmung zwischen verschiedenen Websites zu finden, die auf demselben Nginx-Server gehostet werden, wie

server {
  listen 80;
  listen [::]:80;
  server_name myserver1; 

und noch einer wie

server {
  listen 80;
  listen [::]:80;
  server_name myserver2; 

Auf diese Weise können sie sowohl auf Port 80 laufen als auch übereinstimmen, je nachdem, ob sie aufgerufen werden vonhttp://meinserver1oderhttp://meinserver2.

Wie können Sie sich nun mit Ihren Diensten verbinden? Sie können Upstream-Dienstanbieter definieren wie

#place this outside of the 'server{' block
upstream server1 {
  server localhost:1234;
} 

und dann weiterleiten über

# place this inside the 'server{' block
location / {
  proxy_pass http://server1;
}

verwandte Informationen