NGINX Reverse Proxy Manager – gzip Aktivierung

Der NGINX Reverse Proxy Manager ist eine nützliche Tool Sammlung in Form eines Docker Containers. Das Deployment gestaltet sich als enorm einfach und wir können blitzschnell die ersten Proxy Hosts definieren und den Container als Reverse Proxy verwenden. Wollen wir jedoch bestimmt Konfigurationen individuell anpassen, muss man einige Dinge beachten. Viele Webapplikation verwenden zum Beispiel gzip als Kompression, welche in NGINX manuell aktiviert werden muss.

Anpassungen am Container Deployment erforderlich

Damit wir Snippets von einzelnen Konfigurationselementen für den Container bereitstellen können, müssen wir ein lokales Linux Verzeichnis als Mount bereitstellen. Am einfachsten erstellen wir den Container mittels docker-compose und geben die entsprechenden Volumes an.

---
#...

volumes:
  - /srv/nginx-rpm/data:/data
  - /srv/nginx-rpm/letsencrypt:/etc/letsencrypt

#...

Die Syntax für die Angabe von Filesystem Volumes gestaltet sich folgendermaßen:

---
#...

volumes:
  - <Pfad des lokalen Filesystem>:<Pfad im Container>
  - <Pfad des lokalen Filesystem>:<Pfad im Container>

#...

Erklärung der Konfigurationen

Um das Setup besser zu verstehen, sollten wir einmal in den Container springen und uns die NGINX Konfiguration anschauen.

docker exec -it nginx-proxy-manager_app_1 /bin/bash

[root@docker-def72057c4b9:/app]# cat /etc/nginx/nginx.conf | grep include

In dem folgenden Segment sehen wir, welche Dateien von NGINX über das „include“ Statement geladen werden. Wichtig sind uns hier die eingebundenen „proxy_host“ Konfigurationen.

include /etc/nginx/modules/*.conf;
	include                       /etc/nginx/mime.types;
	include /etc/nginx/conf.d/include/resolvers.conf;
	include conf.d/include/ip_ranges.conf;
	include /data/nginx/custom/http_top[.]conf;
	include /etc/nginx/conf.d/*.conf;
	include /data/nginx/default_host/*.conf;
	include /data/nginx/proxy_host/*.conf;
	include /data/nginx/redirection_host/*.conf;
	include /data/nginx/dead_host/*.conf;
	include /data/nginx/temp/*.conf;
	include /data/nginx/custom/http[.]conf;
	include /data/nginx/stream/*.conf;
	include /data/nginx/custom/stream[.]conf;
include /data/nginx/custom/root[.]conf;

Wir können uns jetzt die einzelnen proxy_host Dateien anschauen und sehen dabei, dass in diesen Dateien wieder ein „include“ Statement angegeben ist.

[root@docker-def72057c4b9:/app]# cd /data/nginx/proxy_host/

[root@docker-def72057c4b9:/data/nginx/proxy_host]# ls
1.conf
2.conf
4.conf
6.conf
7.conf
8.conf

[root@docker-def72057c4b9:/data/nginx/proxy_host]# cat 1.conf | grep include
  include conf.d/include/letsencrypt-acme-challenge.conf;
  include conf.d/include/ssl-ciphers.conf;
    include conf.d/include/force-ssl.conf;
    include conf.d/include/proxy.conf;
  include /data/nginx/custom/server_proxy[.]conf;

gzip Konfiguration

Wir folgen jetzt der „server_proxy[.]conf“ Pfadangabe in unserer proxy_host Datei und legen im Filesystem für unser Volume Mount das entsprechende Snippet File unter „srv/nginx-rpm/data/nginx/custom/server_proxy.conf“ ab. Wir definieren in diesem Snippet unsere gewünschte gzip Konfiguration.

    gzip on;
    gzip_proxied any;
    gzip_types
        text/css
        text/javascript
        text/xml
        text/plain
        application/javascript
        application/x-javascript
        application/json;

Jetzt nur noch den Container neu starten, damit die neue Konfiguration geladen wird.

docker restart nginx-proxy-manager_app_1

Beginne damit, deinen Suchbegriff oben einzugeben und drücke Enter für die Suche. Drücke ESC, um abzubrechen.

Zurück nach oben