Von Version 1.3
bearbeitet von rth
am 01.09.2021, 16:34
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 5.1
bearbeitet von sas
am 28.03.2022, 11:23
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Dokument-Autor
... ... @@ -1,1 +1,1 @@
1 -XWiki.rth
1 +XWiki.sas
Inhalt
... ... @@ -14,8 +14,58 @@
14 14  Da {{formcycle/}} vor allem bei der Anmeldung an einem Formular die ursprüngliche Aufruf-URL des Benutzers interpretiert und diese ggf. nicht ermittelt werden kann, ist es nötig, zwischengeschaltete Server entsprechend zu konfigurieren. Hierbei ist darauf zu achten, dass sowohl der HTTP-Header //Host// als auch das verwendete Protokoll (//HTTP //oder //HTTPS//) unverändert weitergereicht werden. Ebenso muss das korrekte Weiterleiten von WebSocket-Verbindungen gewährleistet werden. Als Alternative zu den konkreten Protokollen kann der zwischengeschaltete Server ebenso über //X-Forwarded// Header mitteilen, welches Protokoll die Anfrage ursprünglich verwendet hat.
15 15  {{/info}}
16 16  
17 -== Beispielkonfiguration Apache ==
18 18  
18 +
19 +== Verwenden von //X-Forwarded// Headern für unverschlüsselte Kommunikation ==
20 +
21 +Wenn der zwischengeschaltete Server das Senden von //X-Forwarded// Headern unterstützt und der {{formcycle/}} hostetende Servlet-Container diese Header auswerten kann, kann die Kommunikation zwischen zwischengeschaltetem Server und {{formcycle/}} auch über ein anderes Protokoll erfolgen. Sowohl beim vorgeschalteten Server als auch beim Servlet-Container muss das Verwenden dieser Header konfiguriert sein. Nähere Informationen zur Konfiguration finden sich in der Dokumentation des jeweiligen Produktes.
22 +
23 +=== Konfigurationsbeispiele ===
24 +
25 +Im //Apache// kann das Mitsenden der entsprechenden Header in den für den Reverse-Proxy zuständigen //VirtualHost//s beispielsweise wie folgt konfiguriert werden:
26 +
27 +{{code language="none"}}
28 +//HTTP
29 +RequestHeader set X-Forwarded-Port "80"
30 +RequestHeader set X-Forwarded-Proto "http"
31 +
32 +//HTTPS
33 +RequestHeader set X-Forwarded-Port "443"
34 +RequestHeader set X-Forwarded-Proto "https"
35 +{{/code}}
36 +
37 +Bei //nginx// kann für das Mitsenden der entsprechenden Header in der für den Reverse-Proxy zuständigen Sektion beispielsweise folgende Konfiguration verwendet werden:
38 +
39 +{{code language="none"}}
40 +proxy_pass http://127.0.0.1:8080/formcycle/;
41 +proxy_set_header Host $http_host;
42 +proxy_set_header x-real-ip $remote_addr;
43 +proxy_set_header x-forwarded-proto $scheme;
44 +{{/code}}
45 +
46 +{{velocity}}
47 +##We also have settings for various timeouts in Nginx:
48 +##proxy_connect_timeout 600;
49 +##proxy_send_timeout 600;
50 +##proxy_read_timeout 600;
51 +{{/velocity}}
52 +
53 +Für //Apache Tomcat//-Server muss für das Auswerten der mitgesendeten //X-Forwarded//-Header in der {{code language="none"}}server.xml{{/code}} innerhalb der //Catalina//-Engine der folgende Valve-Eintrag eingefügt werden:
54 +
55 +{{code language="none"}}
56 +<Engine......
57 + <Valve className="org.apache.catalina.valves.RemoteIpValve"
58 + internalProxies="<IP's der vertrauenswürdigen Proxy-Server>"
59 + remoteIpHeader="x-forwarded-for"
60 + protocolHeader="x-forwarded-proto"
61 + protocolHeaderHttpsValue="https" />
62 +</Engine>
63 +{{/code}}
64 +
65 +**Hinweis:** Sollte die Konfiguration der //X-Forwarded//-Header nicht greifen, so ist es unter Umständen notwendig in der Eigenschaft //internalProxies// die IP's der vertrauenswürdigen Proxy-Server zu konfigurieren. Erwartet wird hier eine oder mehrere IP-Adressen (z.B.: 192\.168\.0\.10|192\.168\.0\.11) oder ein IP-Adressbereich, welcher mittels regulären Ausdrucks (z.B.: 169\.254\.\d{1,3}\.\d{1,3}) definiert werden kann.
66 +
67 +== Alternative Beispielkonfiguration Apache ==
68 +
19 19  Für die korrekte Konfiguration eines Apache-Server, welcher als Revers-Proxy agiert, sind drei Punkte relevant und z.B. in der Konfiguration der VirtualHost´s zu hinterlegen:
20 20  
21 21  1. Die Anweisung {{code language="none"}}ProxyPreserveHost On{{/code}} zum Erhalt des ursprünglich aufgerufenen //Host//-Headers
... ... @@ -22,9 +22,18 @@
22 22  1. Die Separierung der einzelnen Protokolle und deren Verwendung bei der Weiterleitung zum Anwendungsserver. Dies bedeutet, dass für //HTTP// und //HTTPS// ein eigener VirtualHost mit entsprechender Konfiguration benutzt werden muss.
23 23  1. Konfiguration der bedingten RewriteRule für die Weiterleitung der WebSocket-Verbindungen jeweils über WS und WSS. Hierbei verwendet FORMCYCLE standardmäßig die entsprechenden Ports des Servlet-Containers (WS-Port = HTTP-Port, WSS-Port = HTTPS-Port).
24 24  
25 -Diese Konfiguration ist, ebenso wie die ggf. nötigen Einstellungen bei der Verwendung selbsterstellter Zertifikate, hier kurz veranschaulicht:
75 +Für die Einstellungen am Apache ist es notwendig die entsprechenden Module zu aktivieren. Folgende sind mindestens erforderlich:
26 26  
77 +* proxy
78 +* proxy_http
79 +* proxy_wstunnel
80 +* rewrite
27 27  
82 +Weiter Informationen zu den Modulen des Apaches finden Sie [[hier>>https://httpd.apache.org/docs/current/mod/||rel="noopener noreferrer" target="_blank"]].
83 +
84 +Die oben erläuterte Konfiguration ist, ebenso wie die ggf. nötigen Einstellungen bei der Verwendung selbsterstellter Zertifikate, hier kurz veranschaulicht:
85 +
86 +
28 28  {{code language="none"}}
29 29  <VirtualHost www.example.com:80>
30 30   ...
... ... @@ -71,50 +71,4 @@
71 71  </IfModule>
72 72  {{/code}}
73 73  
74 -== Verwenden von //X-Forwarded// Headern für unverschlüsselte Kommunikation ==
75 -
76 -Wenn der zwischengeschaltete Server das Senden von //X-Forwarded// Headern unterstützt und der {{formcycle/}} hostetende Servlet-Container diese Header auswerten kann, kann die Kommunikation zwischen zwischengeschaltetem Server und {{formcycle/}} auch über ein anderes Protokoll erfolgen. Sowohl beim vorgeschalteten Server als auch beim Servlet-Container muss das Verwenden dieser Header konfiguriert sein. Nähere Informationen zur Konfiguration finden sich in der Dokumentation des jeweiligen Produktes.
77 -
78 -=== Konfigurationsbeispiele ===
79 -
80 -Im //Apache// kann das Mitsenden der entsprechenden Header in den für den Reverse-Proxy zuständigen //VirtualHost//s beispielsweise wie folgt konfiguriert werden:
81 -
82 -{{code language="none"}}
83 -//HTTP
84 -RequestHeader set X-Forwarded-Port "80"
85 -RequestHeader set X-Forwarded-Proto "http"
86 -
87 -//HTTPS
88 -RequestHeader set X-Forwarded-Port "443"
89 -RequestHeader set X-Forwarded-Proto "https"
90 -{{/code}}
91 -
92 -Bei //nginx// kann für das Mitsenden der entsprechenden Header in der für den Reverse-Proxy zuständigen Sektion beispielsweise folgende Konfiguration verwendet werden:
93 -
94 -{{code language="none"}}
95 -proxy_pass http://127.0.0.1:8080/formcycle/;
96 -proxy_set_header Host $http_host;
97 -proxy_set_header x-real-ip $remote_addr;
98 -proxy_set_header x-forwarded-proto $scheme;
99 -{{/code}}
100 -
101 -{{velocity}}
102 -##We also have settings for various timeouts in Nginx:
103 -##proxy_connect_timeout 600;
104 -##proxy_send_timeout 600;
105 -##proxy_read_timeout 600;
106 -{{/velocity}}
107 -
108 -Für //Apache Tomcat//-Server muss für das Auswerten der mitgesendeten //X-Forwarded//-Header in der {{code language="none"}}server.xml{{/code}} innerhalb der //Catalina//-Engine der folgende Valve-Eintrag eingefügt werden:
109 -
110 -{{code language="none"}}
111 -<Engine......
112 - <Valve className="org.apache.catalina.valves.RemoteIpValve"
113 - internalProxies="<IP's der vertrauenswürdigen Proxy-Server>"
114 - remoteIpHeader="x-forwarded-for"
115 - protocolHeader="x-forwarded-proto"
116 - protocolHeaderHttpsValue="https" ></Engine>
117 -</Engine>
118 -{{/code}}
119 -
120 -**Hinweis:** Sollte die Konfiguration der //X-Forwarded//-Header nicht greifen, so ist es unter Umständen notwendig in der Eigenschaft //internalProxies// die IP's der vertrauenswürdigen Proxy-Server zu konfigurieren. Erwartet wird hier eine oder mehrere IP-Adresse(n) oder ein IP-Adressbereich welcher mittels regulären Ausdrucks (z.B.: 169\.254\.\d{1,3}\.\d{1,3}) definiert werden kann.
133 +== ==