... |
... |
@@ -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,47 +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 |
|
- remoteIpHeader="x-forwarded-for" |
114 |
|
- protocolHeader="x-forwarded-proto" |
115 |
|
- protocolHeaderHttpsValue="https" /> |
116 |
|
-</Engine> |
117 |
|
-{{/code}} |
|
133 |
+== == |