Leiten Sie einen Unterpfad mit Nginx zu einem externen Host um

13

Ich muss eine recht einfache Karte in Nginx erstellen, die einen Subpfad zu einem anderen Server umleitet, der sich im selben Subnetz befindet.

  • Nginx-Server: 192.168.0.2
  • Tomcat-Server: 192.168.0.3:8443

Ich habe versucht, dies in den Serverbereich zu stellen

    location /tomcatapi/ {
        rewrite /tomcatapi/(.*) $1 break;
        proxy_pass http://192.168.0.3:8443;
    }

Auf http://www.myservice.com/tomcatapi/ kann ich jedoch nur auf eine 500-Fehlerseite zugreifen. In der Nginx-Protokolldatei tritt der folgende Fehler auf:

    the rewritten URI has a zero length

Was fehlt mir in dieser Konf?

carlo.polisini
quelle

Antworten:

12

Schauen wir uns Ihre Rewrite-Zeile an:

rewrite /tomcatapi/(.*) $1 break;

Sie nehmen das Bit in Klammern (dh alles danach /tomcatapi/), das zugewiesen wird $1, und verwenden es als den einzigen Inhalt Ihrer umgeschriebenen URI.

In Ihrem Beispiel folgt nichts mehr /tomcatapi/, sodass die Umschreibung leer ist und Nginx darüber jammert.

Wenn Sie die Umschreiberegel in ändern

rewrite /tomcatapi/(.*) /$1 break;

dann landen Sie immer mindestens /in der Neuschreibausgabe.

Flup
quelle
Vielen Dank für Ihre Antwort, trotzdem habe ich das "/" hinzugefügt, aber jetzt beim Zugriff auf die URL bleibt der Browser im Ladezustand hängen und in der Protokolldatei wird jetzt ein anderer Fehler angezeigt: Upstream hat keinen gültigen HTTP / 1.0-Header gesendet, während der Antwortheader vom Upstream gelesen wurde
carlo.polisini
Was sagen die Protokolle auf Ihrem Tomcat-Server?
Flup
Ich habe den Fehler gefunden, der Fehler war, dass die App nur unter https und nicht unter http verfügbar war! Die Syntax war also direkt nach Ihrer Korrektur. Ersetzen Sie http einfach durch https, damit es funktioniert.
carlo.polisini