Wie richte ich einen Reverse-Proxy mit Nginx ein?

Wie richte ich einen Reverse-Proxy mit Nginx ein?

Ich versuche, Hostnamen für meine Docker-Container zu erhalten, undda ich nur einen Reverseproxy verwenden kanndafür versuche ich genau das mit hilfe von nginx zu erreichen.

Ein Docker-Container ist ein Webdienst, der den Port 8080 für meinen lokalen Host verfügbar macht.

So kann ich auf den Webserver zugreifen über:

http://localhost:8080

Stattdessen möchte ich lieber Folgendes verwenden:

http://webservice.local

Daher fügte ich zu meinem/etc/hosts

127.0.0.1 webservice.local

Ich habe dann Nginx installiert und Folgendes hinzugefügt /etc/nginx/sites-available/default:

server {
     listen 80 default_server;
     listen [::]:80 default_server ipv6only=on;

     root /usr/share/nginx/html;
     index index.html index.htm;

     # Make site accessible from http://localhost/
     server_name localhost;

     location / {
             # First attempt to serve request as file, then
             # as directory, then fall back to displaying a 404.
             try_files $uri $uri/ =404;
             # Uncomment to enable naxsi on this location
             # include /etc/nginx/naxsi.rules
     }


     location webservice.local {
         proxy_pass http://localhost:8080
     }

Nach dem Neuladen von Nginx erhalte ich beim Versuch, es in meinem Browser ERR_CONNECTION_REFUSEDzu öffnen, den folgenden Fehler .http://webservice.local

Was habe ich falsch gemacht? Wie kann ich den Reverse-Proxy richtig einrichten?

Antwort1

Ich bin nicht sicher, ob das die richtige Syntax ist. Versuchen Sie es mit etwas wie:

upstream myupstream {
    server 127.0.0.1:8080 fail_timeout=2s;
    keepalive 32;
}

location / {
     proxy_pass http://myupstream;
     proxy_redirect http://myupstream/ /;
}

sowas in der Art..

Wenn Sie jedoch nur Port 8080 auf 80 umleiten möchten, warum verwenden Sie dann nicht ein Netzwerkdienstprogramm wie socat?

Anschließend sollten Sie in Nginx für jeden Upstream virtuelle Hosts hinzufügen und diese virtuellen Hosts in DNS oder /etc/hosts hinzufügen, die alle in „localhost“ aufgelöst werden.

Oder Sie können einfach den Upstream vermeiden und virtuelle Hosts wie folgt verwenden:

server {
  listen 80;
  server_name myvirtualhost1.local;
  location / {
    proxy_pass http://127.0.0.1:8080;
}

server {
  listen 80;
  server_name myvirtualhost2.local;
  location / {
    proxy_pass http://127.0.0.1:9090;
}

verwandte Informationen