chp:images:nginx

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
chp:images:nginx [2019/12/19 15:40] – [HTTP Caching] matthiaschp:images:nginx [2026/05/27 14:01] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== NGINX ======
 +[[https://nginx.org/|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.
 +
 +===== Builds =====
 +Nginx bestaat in 2 smaken: een [[https://nginx.com|commerciële]] en
 +een [[https://nginx.org|open source]] variant. Wij bieden de open source
 +smaak aan.
 +Deze wordt gebouwd in de Major.Medior.Minor formaat (bijv. 1.21.6).
 +Wij brengen de de images met de volgende speciale tags :
 +^ Formaat           ^ Voorbeeld               ^ Uitleg ^
 +| latest            | registry.npohosting.nl/npohosting/nginx:latest | Laatste build van hoogste Major.Medior |
 +| Major.Medior       | registry.npohosting.nl/npohosting/nginx:1.21   | Laatste build van de genoemde  Major.Medior   |
 +| Major.Medior.Minor | registry.npohosting.nl/npohosting/nginx:1.21.6 | Specifieke versie release             |
 +
 +Wij adviseren voor projecten om de Major.Medior te gebruiken om zo de
 +security op peil te houden en na testen de Medior versie te verhogen
 +wanneer dit nodig is.
 +
 +===== Versies =====
 +We onderhouden de meest recente zgn "mainline" release. Op moment van
 +schrijven is dat 1.21.x. Minor updates releasen we 1x per 4 weken,
 +tenzij er ernstige security incidenten gevonden worden, dan releasen we
 +zo snel mogelijk.
 +
 +===== Gebruik =====
 +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.
 +
 +Maak een caching directory aan die in memory leeft, door ervoor te zorgen
 +dat er in de deployment config onder spec.template.spec het volgende staat
 +bij volume:
 +<code>
 +      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
 +</code>
 +Zet vervolgens onder spec.template.spec.container in de specifieke
 +container onder volumeMounts:
 +<code>
 +          volumeMounts:
 +            - mountPath: /mnt/nginx-cache
 +              name: nginx-cache
 +            - mountPath: /etc/nginx/conf.d
 +              name: nginx-confd
 +            - mountPath: /etc/nginx/nginx.conf
 +              name: nginx-conf
 +</code>
 +
 +=== 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:
 +<code>
 +          resources:
 +            limits:
 +              memory: 640Mi
 +</code>
 +
 +=== 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:
 +<code>
 +proxy_cache_path /mnt/nginx-cache levels=1:2 keys_zone=cache:10m inactive=24h max_size=350m ;
 +</code>
 +
 +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:
 +<code>
 +    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;    
 +</code>