/
Pack Hosting Panel

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);