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 procesuspm2 ls
oupm2 monit
Activer le HTTPS
sudo certbot --nginx