Configuration automatique de Nginx

Important : Cette procédure s'adresse aux utilisateurs d'un NAS Asustor ayant rencontré des difficultés après la mise à jour vers ADM version 5.0.0.RHN2.

Avant cette mise à jour, la partie Web du NAS permettait d’héberger des sites en PHP 7.3. Après la mise à jour, seul PHP 8 ou supérieur est accepté. Cela peut entraîner :

Étapes de résolution et script d'automatisation

Voici les étapes suivies pour corriger la configuration de Nginx et éviter ces erreurs :

1. Créer un fichier de configuration personnalisé

user@NAS:/volume1/home/user $ mkdir -p nginx
user@NAS:/volume1/home/user/nginx $ nano vhost_mon-site.fr_443.conf

Contenu :

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl_certificate         /usr/builtin/etc/certificate/ssl/.../ssl.crt;
    ssl_certificate_key     /usr/builtin/etc/certificate/ssl/.../ssl.key;
    root "/volume1/Web/wordpress";
    server_name mon-site.fr;
    index index.php index.html index.htm;
    autoindex on;

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/usr/local/AppCentral/php8.1/etc/socket/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
}

2. Créer un script de remplacement automatique

user@NAS:/volume1/home/user $ sudo nano /usr/local/bin/fix_nginx_config.sh

Contenu :

#!/bin/sh

TARGET="/usr/local/AppCentral/nginx-1.18.0/data/conf/sites-available/vhost_mon-site.fr_443.conf"
SOURCE="/volume1/home/user/nginx/vhost_mon-site.fr_443.conf"

cp -f "$SOURCE" "$TARGET"

NGINX_PIDS=$(pgrep -f "nginx.*conf")

if [ -n "$NGINX_PIDS" ]; then
    for pid in $NGINX_PIDS; do
        kill -HUP "$pid"
    done
else
    echo "Nginx ne semble pas démarré, impossible de le recharger."
fi

3. Rendre le script exécutable

sudo chmod +x /usr/local/bin/fix_nginx_config.sh

4. Ajouter le script au démarrage

Créer un fichier dans /usr/local/etc/rc.d/ :

sudo nano /usr/local/etc/rc.d/S99fix_nginx_config.sh

Contenu :

#!/bin/sh
/usr/local/bin/fix_nginx_config.sh
sudo chmod +x /usr/local/etc/rc.d/S99fix_nginx_config.sh

Cette méthode permet de reconfigurer automatiquement Nginx à chaque redémarrage du NAS pour éviter les erreurs de type 404.

Conclusion

Grâce à ce correctif, Nginx accepte PHP 8.1 via son socket et gère correctement les requêtes / en les redirigeant vers index.php, évitant les erreurs 404. Ce type de correction est indispensable depuis ADM 5.0.0, qui ne prend plus en charge PHP 7.3.