NGINX konfigurieren

Im Folgenden finden Sie eine Beschreibung, wie NGINX als Reverse-Proxy für Intrexx konfiguriert wird.

Wenn sie eigene Konfigurationen für Web-Frontends (Nginx, IIS, Apache, HAProxy, TrafficServer o.ä.) erstellen möchten, beachten Sie Folgendes:

HTTPS

  • Zugriff nur per HTTPS

  • Redirect von HTTP auf HTTPS

Blockierte URLs

  • Versteckte Dateien und Verzeichnisse beginnend mit .. Ausnahme : /.well-known/

  • /WEB-INF/ (rekursiv)

  • /web.config

  • /bin/ (rekursiv)

1. Konfigurationsdatei anpassen

Ersetzen Sie bei einem Upgrade in der NGINX-Konfigurationsdatei die Zeile

location ~ (css|download|images|include|is|script|temp|thirdparty|userfiles) {

durch die folgende Zeile

location ~ ^(/css|/fonts|/images|/include|/script|/thirdparty|/userfiles|/download|/is) {

In der Regel sind Nginx-Konfigurationsdateien betroffen, die mit Intrexx 20.09, 20.03 OU3, 19.09, 19.03 OU13 oder älter erstellt wurden.

Die Konfiguration von NGINX erfolgt über Konfigurationsdateien. Nachdem Sie die Intrexx-Setup-Dateien heruntergeladen haben, finden Sie drei Vorlagendateien für das Konfigurieren von NGINX. Diese können Sie als Basis für die Konfiguration Ihres NGINX verwenden.

Die Vorlagendateien finden Sie unter folgendem Pfad: <INTREXX-ROOT>/samples/web-tls-configuration/nginx/

Die Namen der Vorlagendateien lauten portal-intranet.conf, portal-internet.conf und portal-remote.conf

Hinweis Die Datei "portal-internet.conf" enthält über die Angaben in der Datei "portal-intranet.conf" hinaus noch zusätzlich einen Abschnitt für die Konfiguration des OCSP-Staplings.

Über die beiden folgenden aufklappbaren Links können Sie sich beide Dateien ansehen und sich so bereits einen Überblick verschaffen.

Öffnen Sie die Datei mit einem Editor Ihrer Wahl, um die für Sie erforderlichen Anpassungen vorzunehmen.

TODOs

In der Datei finden Sie Anweisungen zur Konfiguration. Diese sind jeweils mit "TODO" gekennzeichnet.
Zentrale TODOs sind:

  • die Angabe des Web Connectors und des Ports

  • Angabe des Servernamens (Full-Qualified-Domainname) und Ports

  • Angaben zu SSL

  • Pfad zur Zertifikatsdatei (*.cer bzw. *.pem) und zum privaten Schlüssel

Wichtig ist zudem die Angabe des korrekte Pfads zum "external/htmlroot" Verzeichnis des Portals.

  1. Öffnen Sie hierzu "Portal > Portaleigenschaften > Frontend Webserver (Reverse-Proxy/Load-Balancer) > Frontend-Webserver".

    Name

    Beschreibung

    NGINX Virtueller Host

    "NGINX Virtueller Host" bezieht sich auf den Embedded Tomcat. Über den Virtuellen Host nimmt NGINX die Verbindung zum Intrexx-Portaldienst auf. Üblicherweise ist hier "localhost" zu hinterlegen. (Eine Ausnahme kann vorliegen, wenn NGINX auf einem anderen Server als Intrexx installiert ist. In diesem Fall ist dann hier der Intrexx-Server zu hinterlegen.)

    NGINX Konfigurationsdatei

    Sie können die NGINX-Konfigurationsdatei über Intrexx erzeugen.

    Erfassen Sie den Pfad zu dem Verzeichnis, in dem Sie die NGINX-Konfigurationsdatei erzeugen möchten.
    Beispiel: /myfolder/portal.example.com.conf
    Kopieren Sie anschließend die NGINX-Konfigurationsdatei an die gewünschte Stelle unterhalb von /etc/nginx.
    Beispiel: /etc/nginx/sites-available/portal.example.com.conf

    Embedded Tomcat Port

    Hier wird der Port angezeigt, den Sie in der Vorgängerversion von Intrexx verwendet hatten. Diesen Port können Sie belassen.

    Hinweis Bei einer Neuinstallation ist hier der Port 1337 voreingestellt.

    Basis-URL des Portals

    Hier muss die Basis-URL hinterlegt sein.
    Der erste Teil besteht aus der Angabe des Protokolls. Beachten Sie, dass hier https angegeben ist. Der zweite Teil besteht aus der Angabe des Hostnamens, den Sie in der NGINX-Konfigurationsdatei hinterlegt haben. Beachten Sie, dass ein abschließender Slash (/) angegeben ist. Die korrekte Angabe ist zwingend erforderlich, damit Ihr Portal im Browser aufgerufen werden kann.

  2. Klicken Sie auf "OK".
    Intrexx erzeugt die Konfigurationsdatei. Dabei werden die in den Eingabefeldern erfassten Angaben in die Konfigurationsdatei geschrieben. Die Datei wird im angegebenen Verzeichnis abgelegt.

2. Konfigurationsdatei in Verzeichnis "sites-available" ablegen

Legen Sie die Konfigurationsdatei im Verzeichnis "sites-available" ab.

Hinweis Je nach Linux-Distribution und dem gewählten Installationspaket kann das Verzeichnis "sites-available" gegebenenfalls nicht zur Verfügung stehen.

In der Regel liegen die Verzeichnisse "sites-available/site-enabled" vor, wenn man Nginx aus Repositorys von Debian-basierten Distributionen installiert. Wenn man Nginx aus dem Repository von Nginx bezieht, gibt es die Verzeichnisse nicht. In diesem Fall liegt nur conf.d/ vor. Gleiches gilt für andere Linux-Distrubutionen wie beispielsweise CentOS. Auch hier liegt conf.d/ vor.

Informieren Sie sich in diesem Fall, wie die Konfigurationsdatei bei Ihrer Linux-Distribution implementiert werden muss.

3. Symlink zur Konfigurationsdatei erstellen

Erstellen Sie von sites-enabled einen Symlink auf die sites-available-Datei. Verwenden Sie dabei die vollständigen Pfade.

Hinweis Beim Einsatz von Symlinks sollten Sie darauf achten, diesen direkt im gewünschten Verzeichnis zu erstellen.

Beispiel: "ln -s /etc/nginx/sites-available/host.example.org.conf"

4. NGINX neu starten

Starten Sie NGINX neu.

NGINX und Intrexx auf verschiedenen Servern (NGINX auf Remote-Maschine)

  1. Falls der NGINX auf einem anderen Server als Intrexx ausgeführt wird, müssen Sie folgende Blöcke in der Konfigurationsdatei auskommentieren:

    Root Direktive (The root path of the Intrexx web application.)

    • Einstellungen für favicon und robots (serve favicon and robots.txt)

    • Einstellung für statische Dateien (Static files that should be served by Nginx)

    Das Auskommentieren dieser Blöcke ist erforderlich, damit die statischen Dateien nicht von NGINX ausgeliefert werden, da dieser auf den entfernten htmlroot des Portals keinen Zugriff hat.

  2. Sie müssen in der Datei "web.xml" (<Portalverteichnis>\external\htmlroot\WEB-INF\web.xml) den "NonLoopback"-Parameter auf "true " setzen.

    <init-param>
        <description>
            Allow receiving security-sensitive headers on non-loopback network interfaces.
            Values: true or false (default).
         </description>
        <param-name>connector.security.header.receiveOnNonLoopbackInterface</param-name>
        <param-value>true</param-value>
    </init-param>
    

Vergleichen Sie zu diesem Thema auch die Beispiel-Konfigurationsdatei portal-remote.conf.

WebSockets konfigurieren

Damit Sie WebSockets im Zusammenspiel mit NGINX einsetzen können, müssen Sie in der NGINX-Konfigurationsdatei angeben, welche URLs per WebSocket-Protokoll an das Backend weitergeleitet werden sollen. In der Standardkonfiguration stellt sich dies so dar:

...

# Delegate WebSocket requests to the Intrexx Portal Service.

#

location /ws/ {

proxy_pass https://backend;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "Upgrade";

}

# Delegate requests to the Intrexx Portal Service.

#

location / {

proxy_pass https://backend;

...

 

Hinweis Bei einem Upgrade von einer früheren Intrexx-Version muss die bestehende Konfigurationsdatei entsprechend angepasst werden, damit WebSockets genutzt werden können.

Weitere Informationen zu WebSockets finden Sie in Kapitel WebSockets.