XWiki mit nginx und SSL nutzen

· 2 Minuten zu lesen
XWiki mit nginx und SSL nutzen
Photo by Roman Synkevych / Unsplash

Ich spiele zur Zeit mit XWiki als Ersatz für mein privates DokuWiki herum. Die Installation ist unter Debian mithilfe eigenem Repo schnell erledigt. In meinem Fall habe ich mich für das xwiki-tomcat9-mariadb Paket entschieden, dass nicht nur XWiki sondern, wie auch der Name schon vermuten lässt Tomcat 9 und die Anbindung an MariaDB mitbringt.

Nach einem ersten Upgrade ist mir nun allerdings aufgefallen, dass ich keinerlei Seiten mehr bearbeiten konnte, da laut Fehlermeldung kein "Lock" der Seite stattfinden konnte. Nach kurzer Recherche stellte sich heraus, dass Tomcat nicht weiß, dass nginx per SSL läuft. Daher kurz und knapp alle Punkte, die nötig sind, damit XWiki mit nginx und SSL genutzt werden kann. Dies ist meiner Meinung nach in der offiziellen Doku leider etwas unübersichtlich.

In der Datei /etc/tomcat9/server.xml nach folgender Zeile suchen:

<Engine name="Catalina" defaultHost="localhost">

Und dort drunter folgenden Part ergänzen:

    <Valve className="org.apache.catalina.valves.RemoteIpValve"
      internalProxies="127\.0\.[0-1]\.1"
      remoteIpHeader="x-forwarded-for"
      requestAttributesEnabled="true"
      protocolHeader="x-forwarded-proto"
      protocolHeaderHttpsValue="https">
    </Valve>

Weiter geht es in der /etc/xwiki/xwiki.cfg, dort folgende Zeile einkommentieren:

xwiki.url.protocol=https

Ich möchte schöne, kurze URLs haben. Standardmäßig hängt XWiki hinter die URL noch ein /xwiki. Dies lässt sich wie folgt entfernen:

Die XWiki Config vom Tomcat umbennen:

mv /etc/tomcat9/Catalina/localhost/xwiki.xml /etc/tomcat9/Catalina/localhost/ROOT.xml

In /etc/xwiki/xwiki-tomcat9.xml suchen nach:

<Context path="/xwiki" docBase="/usr/lib/xwiki"
         containerSciFilter="org.apache.tomcat.websocket.server.WsSci|org.apache.jasper.servlet.JasperInitializer">

und bei Context path /xwiki durch / ersetzen.

Abschließend noch meine nginx-Config:

server {
    listen [::]:443 ssl http2;
    listen 443 ssl http2;
    server_name wiki.deineDomain.de;

    root /var/www/html;

    # Configuration to avoid Request Entity too large error 413
    client_max_body_size 0;
    ssl_certificate /etc/letsencrypt/deineDomain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/deineDomain/key.pem;

    access_log /var/log/nginx/wiki.deineDomain.access_ssl.log;
    error_log /var/log/nginx/wiki.deineDomain.error_ssl.log;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Scheme $scheme;
        proxy_redirect off;
        if (!-f $request_filename) {
            proxy_pass http://127.0.0.1:8080;
            break;
        }
    }

    location ~ /.well-known {
        allow all;
    }
 }

Dienste neustarten

systemctl restart tomcat9.service
systemctl restart nginx

Fertig.

Bitte lies die Community Guidelines bevor zu kommentierst.