Reverse Proxy

webPDF kann hinter einem Reverse Proxy (nachfolgend "Proxy") betrieben werden, wenn der webPDF-Server keine direkten Anfragen beantworten soll.

 

In diesem Fall kommuniziert der webPDF-Server ausschließlich mit dem Proxy-Server. Der Proxy-Server und der webPDF-Server können dabei unterschiedliche URL-Adressen (Schema, Host und Protokoll) verwenden. Während der Proxy z.B. Port 80 für externe Anfragen (Requests) verwendet, kann der webPDF-Server intern auf 8080 arbeiten und nur über diesen Port mit dem Proxy kommunizieren. Der webPDF-Server kommuniziert somit nur intern und beantwortet keine externen Anfragen (u.U. auch durch eine Firewall blockiert).

 

Für die einzelnen Bereiche des webPDF-Server ergeben sich daraus unter Umständen notwendige Anpassungen.

 

SOAP-Webservices

Für die ausschließliche Nutzung der SOAP-Webservices sind keine gesonderten Anpassungen notwendig. Die Webservices antworten ausschließlich dem Proxy-Server und stellen in Ihren Antworten keine URL-Informationen zur Verfügung. In diesem Fall benötigt der webPDF-Server keine Informationen über die Einstellungen des Proxy-Servers bzw. des ursprünglichen Requests.

 

RESTful-Webservices

Bei der Nutzung der RESTful-Webservices antworten manche Endpunkte mit HTTP-Statuscodes und URL-Informationen. Dies kann z.B. ein "303 See Other" sein, wo auf eine neue URL verwiesen wird. In diesem Fall muss der webPDF-Server die URL der ursprünglichen Anfrage kennen, um eine korrekte Antwort zu formulieren. Im Falle des Einsatz hinter einem Proxy, ist dem webPDF-Server die ursprüngliche Anfrage des Clients allerdings nicht bekannt, sondern nur die Anfrage des Proxy. Aus diesem Grund benötigt der webPDF-Server Informationen über die ursprüngliche Anfrage bzw. Einstellungen, wie er die Anfrage korrekt beantworten kann.

 

Portal

Im Portal werden URL-Informationen über den webPDF-Server benötigt, damit das Portal korrekt arbeiten und die Webservices aufrufen kann. Außerdem liefern (siehe Absatz zuvor) manche RESTful-Aufruf URL-Informationen, die vom Portal ausgewertet und weiter verarbeitet werden. Beim Portal wird zur Konfiguration des webPDF-Servers die Datei "config.js" verwendet, die dynamisch vom Server erstellt und abgerufen wird. Diese JSON-Datei liefert die Informationen, wie die Webservices aufrufbar sind. Daher muss der webPDF-Server Informationen über die ursprüngliche Anfrage des Clients haben. Arbeite webPDF hinter einem Proxy, so fehlen diese Angaben. Diese Angaben müssen daher vom Proxy geliefert werden oder der webPDF entsprechend konfiguriert sein.

 

Konfiguration hinter einem Proxy

Um webPDF hinter einem Proxy zu nutzen und dem webPDF-Server die Informationen über die ursprüngliche Anfrage (Request) mitzuteilen, stehen zwei Wege zur Verfügung:

 

1.Über die Header-Variablen des Proxy-Request an den webPDF-Server

2.Über die statische Konfiguration in der "server.xml" des webPDF-Server

 

zu 1)

Der Proxy kann über "X-Forwarded-" Header-Variablen im Request die URL-Angaben für Schema, Host und Port mitsenden. Über diese Angaben kann der Proxy die Informationen an webPDF weitergeben, unter welcher Adresse der ursprüngliche Request entgegen genommen wurde. Diese Angaben verwendet dann webPDF, um daraus die Werte für die Antwort-URL's (z.B. "config.js" oder "see other") zu berechnen. Sind diese Einstellungen vorhanden, so überschreiben diese die lokalen Einstellungen von webPDF.

 

Es stehen die folgenden Variablen zur Verfügung:

 

Für den Host-Namen:

x-forwarded-host

Für das verwendete Protokoll (http, https):

x-forwarded-proto

Für den verwendeten Port:

x-forwarded-port

 

hint

Die Einstellungen die notwendig sind, um diese Header-Variablen zu senden, entnehmen Sie bitte der Dokumentation des jeweils verwendeten Proxy-Servers.

 

Der webPDF-Server sucht dynamisch in den Proxy-Anfragen nach diesen Variablen und ersetzt die berechnete URL mit den Bestandteilen aus den "x-forwarded-" Variablen. Eine Anpassung an der webPDF-Konfiguration ist in diesem Fall nicht notwendig.

 

zu 2)

Sendet der Proxy keine Header-Variablen oder sind diese nicht einstellbar im Proxy, so kann im webPDF-Server über die "server.xml" eine fest Definition eingetragen werden. Dafür steht im "connector" der Eintrag "proxy" zur Verfügung.

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<server xmlns="http://schema.webpdf.de/1.0/configuration/server">
...
<connectors>
<connector enabled="true" address="" port="8080">
  <proxy host="..." port="..." scheme="..."/>
</connector>
...
</server>

 

Tragen Sie bei den Werten die Informationen ein, die der Proxy-Server nach extern verwendet und die webPDF zur Antwort-Bildung verwenden soll.

 

hint

Sind sowohl die Header-Variablen, wie auch die Konfigurationseinstellungen vorhanden, so haben die Einstellungen im einzelnen Proxy-Request (also die Header-Variablen) immer den Vorrang.