Serveurs Web · 3 min read · Dec 27, 2025

Nginx Catch-All Host Comme Front End Pour Apache Pour ISPConfig 3 Sur Debian Lenny

Nginx Catch-All Host Comme Front End Pour Apache Pour ISPConfig 3 Sur Debian Lenny

Par Nedim Hadzimahmutovic < [email protected] >
Version : v1.1
Dernière modification : 19 mai 2010

Introduction

Apache a toujours été le serveur web de choix pour moi. C’est une véritable bête en ce qui concerne l’utilisation des ressources, en particulier dans un environnement à ressources limitées comme un VPS. J’ai commencé à jouer avec Nginx, un serveur web léger et haute performance. Mon domaine d’intérêt était de faire fonctionner Nginx comme un proxy inverse et de le faire fonctionner dans un environnement Apache/ISPConfig 3.

Le Problème

Je suis un utilisateur d’OpenVZ, apache2-mpm-itk, mod_php. Apache mpm-itk ne prend pas en charge FastCGI. Ce problème augmente de manière dramatique si vous utilisez un système d’exploitation 64 bits, car Apache utilisera maintenant beaucoup plus de mémoire (les systèmes 32 bits ont des pointeurs de 4 octets tandis que les systèmes 64 bits ont des pointeurs de 8 octets). J’ai commencé à recevoir des erreurs de limite KMEMSIZE et Apache en était la raison. Apache rendait mon VPS inutilisable, donc j’ai dû chercher une alternative.

La Solution

Nginx était la réponse, mais je suis un utilisateur d’ISPConfig qui ne prend en charge que Apache et si je trouvais un moyen de contourner cela, il n’y avait pas moyen que je gère manuellement chaque hôte virtuel. La solution était de configurer Nginx comme hôte catch-all en tant que front-end et de le proxy vers Apache qui fonctionnera en arrière-plan sur un port différent. De cette façon, Nginx servira les fichiers statiques et PHP sera laissé à Apache. Vous pouvez également laisser un domaine entier à Nginx si vous le souhaitez, il suffit de mettre l’hôte virtuel de ce domaine avant le vhost par défaut. Une étape supplémentaire serait d’exécuter un environnement chroot 32 bits au-dessus du système d’exploitation 64 bits et d’installer Apache 32 bits, mais cela ne sera pas couvert dans ce tutoriel.

Configurer Apache

Configurez Apache pour qu’il fonctionne sur le port 82 dans /etc/apache2/ports.conf et dans tous vos hôtes virtuels. Pour faciliter les choses, utilisez la commande sed :

 # sed -ie 's/YOUR-IP:80/YOUR-IP:82/g' /etc/apache2/sites-available/*.vhost 

Je suppose que votre hôte virtuel est basé sur l’IP - votre vhost pourrait avoir *:80 au lieu de IP:80.

La commande sed fera des fichiers de sauvegarde de vos fichiers .vhost qui auront l’extension .vhoste. Vous pouvez déplacer les fichiers de sauvegarde vhost :

mkdir /root/apache2_vhost_backup/
mv /etc/apache2/sites-available/*.vhoste /root/apache2_vhost_backup/

Redémarrez Apache et utilisez netstat pour vérifier s’il fonctionne sur le port 82 :

  tcp        0      0 0.0.0.0:82              0.0.0.0:*               LISTEN      7630/apache2 

Maintenant, vous devez changer les modèles Apache d’ISPConfig. Copiez-les dans votre répertoire conf-custom :

 # cd /usr/local/ispconfig/server/ 
 # cp conf/apache_ispconfig.conf.master conf-custom/ 
 # cp conf/vhost.conf.master conf-custom/ 

Ouvrez les deux fichiers et changez :80 en :82. Juste pour être sûr, exécutez la commande grep et vérifiez si la sortie correspond :

 # grep :82 -i /usr/local/ispconfig/server/conf-custom/* 

/usr/local/ispconfig/server/conf-custom/apache_ispconfig.conf.master:NameVirtualHost {tmpl_var name=”ip_address”}:82
/usr/local/ispconfig/server/conf-custom/vhost.conf.master: :82>

Vous verrez toutes les requêtes comme provenant de localhost (127.0.0.1). Pour voir l’adresse IP réelle des utilisateurs, vous devrez installer libapache2-mod-rpaf :

 # apt-get install libapache2-mod-rpaf 

Ajoutez ce qui suit à /etc/apache2/apache2.conf :

# nano /etc/apache2/apache2.conf
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 VOTRE_ADRESSE_IP

Installer Et Configurer Nginx

Activez le dépôt lenny-backports, vous trouverez les instructions sur http://backports.org/.

 apt-get install nginx 

Supprimez le vhost par défaut :

 # rm /etc/nginx/sites-available/default 

Ouvrez le fichier :

 # nano /etc/nginx/sites-available/default 

Ajoutez le contenu suivant au fichier :

server {
    listen   80 default; 
        server_name  _;
        server_name_in_redirect  off;
    resolver  127.0.0.1;
#### www. redirect - tous les domaines commençant par www seront redirigés vers http://domain. ####
    if ($host ~* ^(www\.)(.+)) {
        set $rawdomain $2;
        rewrite ^/(.*)$  http://$rawdomain/$1 permanent;
    }
    access_log  /var/log/ispconfig/httpd/$host/access.log;
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|html|htm|mp3)$ {
    root   /var/www/$host/web; 
    access_log off;
    expires 30d;
    }
location / {
    root   /var/www/$host/web;
    index  index.html index.htm index.php;
        access_log      off;
        proxy_pass http://$host:82;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

C’est tout. Nginx servira tous vos fichiers statiques comme des images, même des fichiers html et les fichiers php seront transmis à Apache.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.