Nginx configuratie
Het opzetten van een NGINX configuratie in je CI/CD-pipeline met het gebruik van de Hipex Deploy image
Introductie
We behandelen onze serverconfiguratie als code. Je zou hetzelfde moeten doen met de NGINX configuratie specifiek voor jouw applicatie. Dit zal ervoor zorgen dat de veranderingen zichtbaar, traceerbaar en overdraagbaar zijn. Altijd hetzelfde op elke omgeving.
Configuratie
Om ervoor te zorgen dat Hipex Deploy jouw NGINX configuraties synchroon houdt met je codebase, hoef je deze alleen maar naar de NGINX-configuratiemap te verwijzen. In dit geval app/etc/nginx
.
$nginxConfig = new NginxConfiguration('app/etc/nginx');
$configuration->addPlatformConfiguration($nginxConfig);
Alle bestanden in de map app/etc/nginx
die overeenkomen met het patroon **/*.nginx*
zullen gekopieerd worden naar de domein configuratiemap ~/domains/example.com/var/etc/
en activeren nginx-reload
.
Domein gespecificeerde configuratie
Als u domein specifieke configuraties heeft, moet de inhoud van uw nginx map dit weerspiegelen.
Neem bijvoorbeeld deze mapstructuur:
- app/etc/nginx/
- example.com/magento-storecode.nginx.conf
- port-80/https.nginx.conf
Wanneer je kijkt naar je testomgeving zal het er zo uitzien:
- app/etc/nginx/
- test.example.com/magento-storecode.nginx.conf
- port-80/https.nginx.conf
Er zijn twee manieren om dit op te lossen. De eerste door een tweede NginxConfiguration
object te maken en te verwijzen naar twee verschillende mappen.
$nginxConfigProduction = new NginxConfiguration('app/etc/nginx-production');
$nginxConfigProduction->setStage($productionStage)
$configuration->addPlatformConfiguration($nginxConfigProduction);
$nginxConfigTest = new NginxConfiguration('app/etc/nginx-test');
$nginxConfigTest->setStage($testStage)
$configuration->addPlatformConfiguration($nginxConfigTest);
De tweede manier is om een symlink te maken van de ene map naar de andere. De mappen structuur ziet er dan alsvolgt uit:
- app/etc/nginx/
- example.com/magento-storecode.nginx.conf
- test.example.com -> example.com
- port-80/https.nginx.conf
Server rol specifiek
Op een cluster heb je meestal andere configuraties nodig op een load balancer dan op je applicatie servers. Dit kan ook gedaan worden met behulp van meerdere NginxConfiguration
objecten.
$nginxConfigApp = new NginxConfiguration('app/etc/nginx-app');
$nginxConfigApp->setServerRoles([ServerRole::APPLICATION]);
$configuration->addPlatformConfiguration($nginxConfigApp);
$nginxConfigLoadBalancer = new NginxConfiguration('app/etc/nginx-test');
$nginxConfigLoadBalancer->setServerRoles([ServerRole::LOAD_BALANCER]);
$configuration->addPlatformConfiguration($nginxConfigLoadBalancer);