... |
... |
@@ -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 |
... |
... |
@@ -80,50 +80,4 @@ |
80 |
80 |
</IfModule> |
81 |
81 |
{{/code}} |
82 |
82 |
|
83 |
|
-== Verwenden von //X-Forwarded// Headern für unverschlüsselte Kommunikation == |
84 |
|
- |
85 |
|
-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. |
86 |
|
- |
87 |
|
-=== Konfigurationsbeispiele === |
88 |
|
- |
89 |
|
-Im //Apache// kann das Mitsenden der entsprechenden Header in den für den Reverse-Proxy zuständigen //VirtualHost//s beispielsweise wie folgt konfiguriert werden: |
90 |
|
- |
91 |
|
-{{code language="none"}} |
92 |
|
-//HTTP |
93 |
|
-RequestHeader set X-Forwarded-Port "80" |
94 |
|
-RequestHeader set X-Forwarded-Proto "http" |
95 |
|
- |
96 |
|
-//HTTPS |
97 |
|
-RequestHeader set X-Forwarded-Port "443" |
98 |
|
-RequestHeader set X-Forwarded-Proto "https" |
99 |
|
-{{/code}} |
100 |
|
- |
101 |
|
-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: |
102 |
|
- |
103 |
|
-{{code language="none"}} |
104 |
|
-proxy_pass http://127.0.0.1:8080/formcycle/; |
105 |
|
-proxy_set_header Host $http_host; |
106 |
|
-proxy_set_header x-real-ip $remote_addr; |
107 |
|
-proxy_set_header x-forwarded-proto $scheme; |
108 |
|
-{{/code}} |
109 |
|
- |
110 |
|
-{{velocity}} |
111 |
|
-##We also have settings for various timeouts in Nginx: |
112 |
|
-##proxy_connect_timeout 600; |
113 |
|
-##proxy_send_timeout 600; |
114 |
|
-##proxy_read_timeout 600; |
115 |
|
-{{/velocity}} |
116 |
|
- |
117 |
|
-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: |
118 |
|
- |
119 |
|
-{{code language="none"}} |
120 |
|
-<Engine...... |
121 |
|
- <Valve className="org.apache.catalina.valves.RemoteIpValve" |
122 |
|
- internalProxies="<IP's der vertrauenswürdigen Proxy-Server>" |
123 |
|
- remoteIpHeader="x-forwarded-for" |
124 |
|
- protocolHeader="x-forwarded-proto" |
125 |
|
- protocolHeaderHttpsValue="https" /> |
126 |
|
-</Engine> |
127 |
|
-{{/code}} |
128 |
|
- |
129 |
|
-**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. |
|
133 |
+== == |