Wiki-Quellcode von Standalone.xml
Zuletzt geändert von Form-Solutions GmbH am 18.01.2024
Zeige letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
1 | Um sicher zustellen, dass der WildFly Server korrekt funktioniert, sollten noch Änderungen an der Konfigurationsdatei | ||
2 | |||
3 | ```text | ||
4 | /opt/wildfly/standalone/configuration/standalone.xml | ||
5 | ``` | ||
6 | |||
7 | vorgenommen werden. | ||
8 | |||
9 | ## HTTP-Listener | ||
10 | |||
11 | Der `default http-listener` muss so konfiguriert werden, dass bei Proxy-Aufrufen die Adressen weitergeleitet werden. Zusätzlich kann die `max-post-size` und die `max-parameters` nach Ihren Bedürfnissen eingestellt werden. Folgendes Beispiel bildet unsere aktuellen Empfehlungen ab: | ||
12 | |||
13 | ```xml | ||
14 | <http-listener | ||
15 | name="default" | ||
16 | proxy-address-forwarding="true" | ||
17 | socket-binding="http" | ||
18 | redirect-socket="https" | ||
19 | max-post-size="157286400" | ||
20 | max-parameters="1500" | ||
21 | ></http-listener> | ||
22 | ``` | ||
23 | |||
24 | ## Deployment Timeout | ||
25 | |||
26 | Da der Start des voll bestückten WildFly Servers länger als eine Minute dauern kann, muss ein entsprechender Timeout im Element `<deployment-scanner>` eingefügt werden, z. B. so: | ||
27 | |||
28 | ```xml | ||
29 | <deployment-scanner | ||
30 | path="deployments" | ||
31 | relative-to="jboss.server.base.dir" | ||
32 | scan-interval="5000" | ||
33 | deployment-timeout="6000" | ||
34 | runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}" | ||
35 | ></deployment-scanner> | ||
36 | ``` | ||
37 | |||
38 | und die `<system-properties>` entsprechend erweitern: | ||
39 | |||
40 | ```xml | ||
41 | <system-properties> | ||
42 | <property name="jboss.as.management.blocking.timeout" value="6000"></property> | ||
43 | </system-properties> | ||
44 | ``` | ||
45 | |||
46 | ## Security | ||
47 | |||
48 | Die sichere Ausführung von Regeln benötigt eine Erweiterung im Subsystem `security-manager`. Das Element `deployment-permissions` muss um ein `minimum-set` erweitert werden, sodass der gesamte Subsystem-Block folgendermaßen aussehen muss: | ||
49 | |||
50 | ```xml | ||
51 | <subsystem xmlns="urn:jboss:domain:security-manager:1.0"> | ||
52 | <deployment-permissions> | ||
53 | <minimum-set> | ||
54 | <permission class="java.security.AllPermission"></permission> | ||
55 | </minimum-set> | ||
56 | <maximum-set> | ||
57 | <permission class="java.security.AllPermission"></permission> | ||
58 | </maximum-set> | ||
59 | </deployment-permissions> | ||
60 | </subsystem> | ||
61 | ``` | ||
62 | |||
63 | ## Vermeidung von Information-Disclosure | ||
64 | |||
65 | Zur unnötigen Ausgabe des Servernamens bzw. der Versionsnummer müssen unterhalb des Subsystem undertow:3.1 entfernt werden. Die zu löschenden Zeilen sind: | ||
66 | |||
67 | ```xml | ||
68 | <filter-ref name="server-header"></filter-ref> | ||
69 | <filter-ref name="x-powered-by-header"></filter-ref> | ||
70 | ``` | ||
71 | |||
72 | sowie der Abschnitt | ||
73 | |||
74 | ```xml | ||
75 | <filters> | ||
76 | <response-header name="server-header" header-name="Server" header-value="WildFly/10"></response-header> | ||
77 | <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"></response-header> | ||
78 | </filters> | ||
79 | ``` | ||
80 | |||
81 | ## Generelles setzen von security-Flags (secure und http-only) | ||
82 | |||
83 | Zur generellen Setzung der security-Flags secure und http-only kann folgender Eintrag innerhalb des Subsystems undertow:3.1 innerhalb des Elements servlet-container ergänzt werden: | ||
84 | |||
85 | ```xml | ||
86 | <session-cookie http-only="true" secure="true"></session-cookie> | ||
87 | ``` | ||
88 | |||
89 | ## Servertuning | ||
90 | |||
91 | Es ist möglich WildFly - falls physisch vorhanden - mehr Speicher zuzuteilen. Hierzu kann man die Datei | ||
92 | |||
93 | ```text | ||
94 | /opt/wildfly/bin/standalone.conf | ||
95 | ``` | ||
96 | |||
97 | öffnen und die Variable `JAVA_OPTS` entsprechend den Speicheranforderungen ändern. Standardmäßig sollte hier | ||
98 | |||
99 | ```bash | ||
100 | if [ "x$JAVA_OPTS" = "x" ]; then | ||
101 | JAVA_OPTS="-server -Xms4g -Xmx10g -XX:MaxMetaspaceSize=4g | ||
102 | -Djava.net.preferIPv4Stack=true" | ||
103 | ... | ||
104 | fi | ||
105 | ``` | ||
106 | |||
107 | ausreichen. Allerdings kann es je nach Anzahl der Kunden, die auf dem Server gehostet werden, nötig werden den initialen Heapspace (Parameter `-Xms`), den maximalen Heapspace (Parameter `-Xmx`) , den Metadaten-Speicher (`-XX:MaxMetaspaceSize`) und/oder die maximale Stack-Größe (`-Xss`) zu erhöhen bzw. zu verringern. Als Vergleichswert kann die Konfiguration unseres Produktivsystems mit | ||
108 | |||
109 | ```text | ||
110 | -Xms4g -Xmx10g -XX:MaxMetaspaceSize=4g | ||
111 | ``` | ||
112 | |||
113 | dienen. | ||
114 | |||
115 | Zusätzlich kann bei der Verwendung von open9j noch das Teilen von Klassen verwendet werden. Hierzu ergänzen Sie die obere Zeile um die folgenden Einträge: `-Xshareclasses -Xscmx256M` | ||
116 | |||
117 | Zusätzlich kann die Speicherverwaltung mit folgenden Parametern optimiert werden (angepasst für unsere Produktivwerte): | ||
118 | |||
119 | ```ini | ||
120 | #Optimierung Speicherverteilung | ||
121 | JAVA_OPTS="$JAVA_OPTS -XX:ReservedCodeCacheSize=256m -XX:NewRatio=6" | ||
122 | #Optimierung GarbageCollection | ||
123 | JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:-UseCodeCacheFlushing" | ||
124 | ``` | ||
125 | |||
126 | Diese sind am Ende der Datei zu ergänzen. |