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.