Integratie met NGINX
NGINX is een krachtige webserver die hoge prestaties en veelzijdigheid garandeert.
Met de NGINX-integratie kunnen we profiteren van beschikbare technieken om zaken zoals load balancing, reverse proxy, caching en beveiliging op te lossen, onder andere.
NGINX installeren
NGINX installeren is heel eenvoudig; in elke Linux-distributie zou NGINX beschikbaar moeten zijn in de pakketten.
Op Ubuntu- of Debian-distributies:
apt install nginx
Op CentOS-, Fedora- of RedHat-distributies:
yum install nginx
Op MacOS X is het beschikbaar via brew en macports.
Voor Windows kun je het installatieprogramma downloaden op: http://nginx.org/en/download.html
Configuratie
Voor dit voorbeeld gaan we ervan uit dat je Netuno al hebt geïnstalleerd en draait in /srv/netuno.
Om een nieuwe site in NGINX te configureren, ga je naar de configuratiemap:
- Op Linux-distributies staat deze meestal in:
/etc/nginx - MacOS X met brew:
/usr/local/etc/nginx
Maak een nieuw configuratiebestand voor de nieuwe site aan in sites-available/netuno.
En de inhoud van dit bestand is:
server {
listen 127.0.0.1:80;
server_name app.jouw-domein.com;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host naam-van-je-netuno-app.local.netu.no;
}
location /netuno {
root /srv/netuno/core/web;
}
location /public {
root /srv/netuno/apps/naam-van-je-netuno-app;
}
}
Je kunt de regel waarin listen 127.0.0.1:80 staat, wijzigen naar je externe IP en bijbehorende poort.
En waar naam-van-je-netuno-app staat, moet de naam van je app komen, bijvoorbeeld mijnapp.
Als de naam van de applicatie een
_bevat, zoalsmijn_app, komt dat doordat Netuno geen-toestaat in de namen van applicaties. Omdat_niet wordt ondersteund in domeinadressen, moet je deze vervangen door-; Netuno converteert dit automatisch naar_en vindt de bijbehorende app.
.local.netu.no is een snelkoppeling naar localhost; als alternatief kan .localhost worden gebruikt.
Dit komt doordat Netuno automatisch zoekt naar een app met de naam die overeenkomt met het subdomein; daarom is het heel belangrijk om in de Host die bij Netuno aankomt, in het prefix de naam van de applicatie aan te geven.
In dit voorbeeld gaan we ervan uit dat Netuno draait op poort 9000 en in het pad /src/netuno; controleer deze informatie en pas aan indien nodig.
De openbare webinhoud van Netuno staat in de map core/web, maar niet alles mag worden blootgesteld; alleen de map netuno.
Daarom zijn de enige mappen die rechtstreeks worden blootgesteld de map core/web/netuno en de map public van de bijbehorende applicatie.
Configuratie van de nieuwe site activeren
Nu moet je een symbolische link naar ons nieuwe configuratiebestand maken om onze nieuwe site te activeren.
Dit komt doordat de methode voor het configureren van NGINX-sites op Linux erop gebaseerd is dat configuratiebestanden in de map sites-available staan, maar wat actief is, wordt bepaald in de map sites-enabled.
Daarom is het maken van de symbolische link belangrijk om duplicatie van bestanden te voorkomen en ervoor te zorgen dat elke wijziging in één enkel bestand wordt aangebracht.
Op Linux maak je de symbolische link als volgt:
ln -s /etc/nginx/sites-available/netuno /etc/nginx/sites-enabled/netuno
NGINX-configuratie herladen
Houd er rekening mee dat je de NGINX-configuratie opnieuw moet laden om deze configuratie effect te laten hebben.
Herladen:
nginx -s reload
Of herstart:
killall nginx
nginx
Of op de nettere manier:
service nginx restart
Of stop de server volledig en start opnieuw:
service nginx stop
service nginx start
Je kunt de status van NGINX controleren met het commando:
service nginx status
De logbestanden van NGINX staan in de map /var/log/nginx.
Fictief lokaal adres
Netuno bepaalt welke applicatie het verzoek (request) verwerkt op basis van het prefix van het adres in de Host-header van HTTP; dit prefix moet de exacte naam van de Netuno-applicatie bevatten.
Daarom is het mogelijk een fictief adres te gebruiken, alleen om Netuno aan te geven dat de juiste applicatie moet worden gebruikt.
We hebben mijn-app.local.netu.no, dat altijd naar het lokale IP verwijst.
De applicatie in Netuno moet
mijn_appzijn, omdat Netuno geen-toestaat in de namen van applicaties, en omdat het domein_niet ondersteunt, moet dit worden vervangen door-, wat Netuno automatisch naar_converteert.
Als alternatief kun je een lokaal adres aanmaken, bijvoorbeeld mijn-app.localhost; in dat geval moet je dit adres registreren als lokale host. Je moet de resolutie van het adres forceren in je hosts-bestand; op Linux bewerk je het bestand:
/etc/hosts
En voeg de regel toe:
127.0.0.1 mijn-app.localhost
Nu kan dit lokale adres in NGINX worden gebruikt.
Als je in een lokale ontwikkelomgeving zit, controleer je in je browser via het adres:
- Via NGINX:
http://mijn-app.localhost
- Rechtstreeks naar Netuno:
http://mijn-app.localhost:9000
Als je op een server of in een container via de terminal werkt, gebruik dan bijvoorbeeld het cURL-commando:
- Via NGINX:
curl -v http://mijn-app.localhost:9000
- Rechtstreeks naar Netuno:
curl -v http://mijn-app.localhost:9000
Zorg er altijd voor dat waar we mijn-app vermelden, de naam van je applicatie moet staan.
In een lokale ontwikkelomgeving kan het, als er een correctie is aangebracht, vooral in het hosts-bestand van het besturingssysteem, nodig zijn de browser opnieuw te starten vanwege de DNS-resolutiecache.
Als je een configuratie in NGINX moet corrigeren, vergeet dan niet altijd de configuratie opnieuw te laden.