Configuration de Nginx sous Windows comme Reverse Proxy pour Tomcat et PHP

Nginx est un serveur Web et un proxy inverse (reverse proxy) reconnu pour sa légèreté et sa capacité à gérer un grand nombre de connexions simultanées avec une consommation de mémoire minimale. Sous Windows, il est particulièrement utile pour centraliser l'accès à différentes technologies, comme des applications Java s'exécutant sur Tomcat et des scripts PHP gérés via FastCGI.

Architecture du Reverse Proxy

L'idée principale est de faire écouter Nginx sur le port standard 80. Selon le nom de domaine utilisé pour accéder au serveur, Nginx redirige la requête vers le service approprié :

  • Sites PHP : Nginx traite les fichiers statiques et transmet les scripts PHP au processeur FastCGI (souvent sur le port 9000).
  • Applications Java : Nginx agit comme un pont et transmet la requête complète au serveur Tomcat (par exemple sur le port 8080).

Configuration de Nginx pour PHP et Java

Voici un exemple de configuration nginx.conf optimisé pour gérer ces deux environnements simultanément :

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    keepalive_timeout  65;

    # Bloc pour un site PHP
    server {
        listen       80;
        server_name  php-app.local;
        root         "C:/www/php_project";

        location / {
            index  index.php index.html;
        }

        # Traitement FastCGI pour PHP
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

    # Bloc Reverse Proxy pour Tomcat
    server {
        listen       80;
        server_name  java-app.local;

        location / {
            proxy_pass        http://127.0.0.1:8080;
            proxy_set_header  Host $host;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            index             index.jsp index.html;
        }
    }
}

Préparation de l'environnement Tomcat

Si vous exécutez plusieurs instances de Tomcat sur la même machine, vous devez modifier leurs ports dans le fichier conf/server.xml pour éviter les conflits :

  • Instance 1 : Port HTTP 8080, Shutdown 8005.
  • Instance 2 : Port HTTP 8081, Shutdown 8006.

Configuration DNS locale

Pour tester vos domaines localement, modifiez le fichier hosts de Windows situé à l'emplacement suivant : C:\Windows\System32\drivers\etc\hosts. Ajoutez les lignes correspondantes à vos server_name :

127.0.0.1   php-app.local
127.0.0.1   java-app.local

Gestion de Nginx via la ligne de commande

Il est recommandé d'utiliser l'invite de commande (CMD) dans le répertoire racine de Nginx pour manipuler le service :

  • Démarrer Nginx : start nginx
  • Arrêt rapide : nginx -s stop
  • Arrêt progressif : nginx -s quit
  • Recharger la configuration (sans redémarrer) : nginx -s reload

Résolution des problèmes courants

Si Nginx refuse de s'arrêter ou si les modifications ne sont pas prises en compte, il est possible que des processus orphelins soient encore actifs en arrière-plan. Vous pouvez vérifier l'occupation du port 80 avec la commande :

netstat -ano | findstr :80

Pour forcer la fermeture de tous les processus Nginx actifs, utilisez la commande suivante :

taskkill /F /IM nginx.exe

Assurez-vous également que votre pare-feu autorise les connexions sur le port 80 si vous accédez au serveur depuis une autre machine du réseau.

Étiquettes: nginx Tomcat Reverse Proxy PHP Windows Server

Publié le 25 juillet à 09h26