kdao design

Configuration Strapi avec Nginx et PM2

7 minute(s) de lecture
Thématique: Node
ssh connexion with old computer

Un guide étape par étape pour une mise en production optimale

Lorsqu'il s'agit de déployer une application Strapi en production, la configuration du serveur web est cruciale pour garantir des performances optimales, une sécurité renforcée et une expérience utilisateur sans faille. Nginx, le serveur web et proxy inverse populaire, s'avère être un choix idéal pour cette tâche.


Dans cet article, nous allons explorer en détail comment configurer Strapi avec Nginx pour tirer le meilleur parti de cette combinaison puissante. Vous découvrirez les étapes clés pour déployer votre application Strapi derrière Nginx, en assurant une gestion efficace des requêtes HTTP, la sécurisation de vos connexions, et la mise en cache pour des performances optimales.

Le cas, traité ci-dessous, concerne un projet installé localement, push sur GitHub puis clone sur le VPS.

NGINX

Les blocs 'Upstream' sont utilisés pour cartographier ou se trouve les différents URL et PORT des projets

Ne pas oublier de changer le PORT

/etc/nginx/conf.d/upstream.conf

# Name of the Strapi server
upstream strapi {
    server 127.0.0.1:1337;
}

Configurer le proxy

/etc/nginx/sites-available/strapi-project-name.conf


server {
    # Listen HTTP
    listen 80;
    server_name api.example.com www.api.example.com;

    # Redirect HTTP to HTTPS
    return 301 https://$host$request_uri;
}

server {
    # Listen HTTPS
    listen 443 ssl;
    server_name api.example.com www.api.example.com;

    # Proxy Config
    location / {
        proxy_pass http://strapi;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_pass_request_headers on;
    }
}

Création d’un lien symbolique vers « sites-enabled » de nginx

sudo ln -s /etc/nginx/sites-available/strapi-project-name.conf /etc/nginx/sites-enabled/strapi-project-name.conf

Configuration Strapi Server

Au sein du projet Strapi

./config/server.js


module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  url: 'https://api.example.com',
});

Il est possible d'utiliser les variables d'environnement

.env

APP_HOST=127.0.0.1
NODE_PORT=1337

Configurer le lancement du serveur Node

./server.js

const strapi = require('@strapi/strapi');
strapi(/* {...} */).start();

Configurer Process Manager (PM2)

En amont, prévoir la configuration de Process Manager

./ecosystem.config.js

module.exports = {
apps: [
  {
    name: "Name-of-Strapi-project",
    exec_mode: "cluster",
    instances: "max", // Or a number of instances
    script: "npm",
    args: "start",
    env: {
      NODE_ENV: "production",
    },
    exp_backoff_restart_delay: 100,
  },
],
};

Lancer le serveur avec PM2

pm2 start ecosystem.config.js

TIPS : Arrêter un procesus pm2 delete <name of project> Lister le procesus pm2 ls ou pm2 monit

Activer le HTTPS

sudo certbot --nginx
kdao design logo
Heure locale
5:06:24 PM