NGINX

Nginx (uitgesproken als “engine-x”) is een webserver en een reverse-proxyserver voor HTTP-, SMTP-, POP3- en IMAP-protocollen, sterk gericht op hoge prestaties en laag geheugengebruik.

Nginx wordt gebouwd in de Major.Minor.Patch formaat (bijv. 1.15.4).
Wij brengen de de images met de volgende speciale tags :

Formaat Voorbeeld Uitleg
latest npohosting/nginx:latest Laatste build van hoogste Major.Minor
Major.Minor npohosting/nginx:1.15 Laatste release van de Minor branch
Major.Minor.Patch npohosting/nginx:1.15.4 Specifieke versie release

Wij adviseren voor projecten om de Major.Minor te gebruiken om zo de security op pijl te houden en na testen de Minor versie te verhogen wanneer dit nodig is.

We onderhouden momenteel de volgende versies:

Versie link naar image
NGINX 1.15 npohosting/nginx:1.15

Deze nginx build maakt gebruik van S2I intergratie, dit houd in dat deze gebruikt kan worden in een Openshift build en je hier code in kan deployen via een repository en een deploy script.

Reverse proxy

Zonder gebruik van het build proces is deze image te gebruiken als reverse proxy, dit kan gedaan worden door in Openshift een ConfigMap toe te voegen aan de deploy.
Deze ConfigMap dient minimaal een default.conf key te bevatten met de reverse proxy config.
Een voorbeeld voor deze config map is te vinden in onze nginx-phpfpm template.

deploy script

Deze image zoekt tijdens het build proces van S2I naar deploy.sh, deze hoort in de root van de repository te staan.
In een deploy-script kunnen zaken als PHP-Composer worden gebruikt.

Webroot

De webroot van deze image bevind zich in /var/www/html

HTTP Caching

Het is mogelijk om caching aan te zetten, hiervoor dienen een aantal dingen uitgevoerd te worden.

Maakt een caching directory aan die in memory leeft, zorg voor dat er in de deployment config onder spec.template.spec het volgende staat bij volume:

      volumes:
        - emptyDir:
            medium: Memory
          name: nginx-cache
        - configMap:
            defaultMode: 420
            name: nginx-confd
          name: nginx-confd
        - configMap:
            defaultMode: 420
            items:
              - key: nginx.conf
                path: nginx.conf
            name: nginx-conf
          name: nginx-conf

Vervolgens zet onder spec.template.spec.container in de specifieke container onder volumeMounts:

          volumeMounts:
            - mountPath: /mnt/nginx-cache
              name: nginx-cache
            - mountPath: /etc/nginx/conf.d
              name: nginx-confd
            - mountPath: /etc/nginx/nginx.conf
              name: nginx-conf

Verhoog de memory limits van de pod

Zorg ervoor dat de memory limit van de pod minimaal de hoeveelheid memory is van de cache + 128MB.
Dit kun je in de deploymentconfig aanpassen onder spec.template.spec.container in de specifieke container onder resources:

          resources:
            limits:
              memory: 640Mi

Voeg caching regels toe aan nginx config

Maak een nginx-conf ConfigMap aan met de key nginx.conf, deze zit standaard in onze Nginx-php-fpm template. Kijk op https://nginx.org/en/docs voor verdere uitleg over alle directives die in een config-file kunnen staan.
Zorg dat de volgende regel boven aan de config staat:

proxy_cache_path /mnt/nginx-cache levels=1:2 keys_zone=cache:10m inactive=24h max_size=350m ;

Maak een nginx-confd ConfigMap aan voor vhost configuratie met minimaal een default.conf als key.
voeg hier in de vhost configuratie het volgende toe:

    proxy_cache cache;
    proxy_cache_key $scheme$request_method$host$request_uri;
    proxy_cache_revalidate on;
    proxy_cache_use_stale error timeout updating;
    proxy_cache_background_update on;
    proxy_cache_lock on;
    
    add_header X-Proxy-Cache $upstream_cache_status;
    add_header X-Proxy-Http-Date $upstream_http_date;    
  • chp/images/nginx.txt
  • Last modified: 2020/03/06 07:53
  • (external edit)