Skip to main content
Skip table of contents

JBoss hinter einem Reverse-Proxy

Die in diesem Abschnitt beschriebenen Konfigurationen sind nicht updatesicher und werden z.B. vom Installer nicht ausgewertet und auf (zukünftigen) Versionen erneut gesetzt.

Allgemeine Informationen

WebSockets

Das CRM nutzt an den folgenden Stellen WebSockets:

CODE
https://<server>:<port>/webclient/primepush/tasklist/*
https://<server>:<port>/script/languageserver/groovy

Ggf. müssen diese im Reverse-Proxy separat hinterlegt werden.

TLS-Termination

Der Applikationsserver (JBoss) kann nicht ohne gültige https-Konfiguration (→ Zertifikate, Key- und Truststore) betrieben werden. Natürlich kann das verwendete Zertifikat zwischen JBoss und Reverse-Proxy ein anderes sein als das für die externe Kommunikation des Reverse-Proxys.

JBoss_ReverseProxy.drawio.svg

Path-Prefix

Der Betrieb des CRMs hinter einem Path-Prefix wird nicht unterstützt.

Konfiguration für mehrere Domains

  • Die globalen Variablen C0CursorDefaultServerBaseURLC0CursorDefaultServerPort, C0CursorDefaultServerProtocol, dürfen nicht gepflegt sein.

  • Der Reverse-Proxy muss die X-Forwarded-* Header pflegen, d.h. X-Forwarded-HostX-Forwarded-ServerX-Forwarded-For. 

  • Der Applikationsserver muss diese auswerten, d.h. folgende JBoss-Konfigurationen sind zu setzen:

CODE
jboss-cli --connect --controller="https-remoting://localhost:<jbossManagementPort>" --command=/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name="proxy-address-forwarding",value=true)
jboss-cli --connect --controller="https-remoting://localhost:<jbossManagementPort>" --command=/subsystem=undertow/server=default-server/https-listener=default-https:write-attribute(name="proxy-address-forwarding",value=true)

Diese Konfiguration kann bei Bedarf auch deaktiviert werden:

CODE
jboss-cli --connect --controller="https-remoting://localhost:<jbossManagementPort>" --command=/subsystem=undertow/server=default-server/http-listener=default:undefine-attribute(name="proxy-address-forwarding")
jboss-cli --connect --controller="https-remoting://localhost:<jbossManagementPort>" --command=/subsystem=undertow/server=default-server/https-listener=default-https:undefine-attribute(name="proxy-address-forwarding")

Der Port <jbossManagementPort> errechnet sich aus Port-Range * 1000 + 9993.

Diese Einstellungen sollten nur und ausschließlich hinter vertrauenswürdigen Proxys gesetzt werden. Andernfalls können Benutzer IP-Spoofing betreiben. Das umfasst auch den direkten Zugriff auf den Applikationsserver ohne Reverse-Proxy.

nginx als Reverse-Proxy (mehrere Domains)

Der nachfolgende Konfigurationsblock kann als Basis für die Konfiguration von nginx als Reverse-Proxy dienen. Die Platzhalter <parameter> sind zu ersetzen.

TEXT
server {
    listen       443 ssl;
    server_name  <public_server>;

    # SSL configuration matching best practices according to https://ssl-config.mozilla.org/
    <insert_ssl_config_here>

    # Root
    location / {
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass https://<crm_server>:<crm_port>;
    }

    # WebSockets
    location /webclient/primepush/tasklist/ {
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass https://<crm_server>:<crm_port>/webclient/primepush/tasklist/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /script/languageserver/groovy {
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass https://<crm_server>:<crm_port>/script/languageserver/groovy;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.