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]
matthias [HTTP Caching]
chp:images:nginx [2020/05/20 05:30] (current)
Line 1: Line 1:
 +====== 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.
 +
 +===== Builds =====
 +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.
 +
 +===== Versies =====
 +We onderhouden momenteel de volgende versies:
 +^ Versie ​    ^ link naar image ^
 +^ NGINX 1.15 | ''​npohosting/​nginx:​1.15''​ |
 +
 +===== 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.
 +
 +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: \\
 +<​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>​
 +Vervolgens zet 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>​