Nginx Reverse proxy ISP Config 3 Catch-All Host avec Debian Wheezy

1/52/53/54/55/5 (1 votes, moyenne: 1,00 sur 5)
Loading...
N

Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.


Bonjour à tous,

 

Suite à l’article sur la configuration d’un reverse proxy Nginx, j’avais dit que je ferais un article expliquant comme le configurer avec Isp Config 3, car la procédure demande quelques petits ajustements.

 

Tout d’abord, sachez, que contrairement au précédent article, Nginx va maintenant être installé sur le même serveur qu’Apache, mais il est bien sûr possible de séparer les deux comme je l’avais fait sur le précédent article.

 

Exemple concret

 

ispconfig3+apache+nginx-01

Le visiteur ne verra que le serveur Nginx, qui stockera en cache, tous les éléments statiques de votre site et certaines requêtes php.

 

Pré-requis :

Pour nos pré-requis, on va partir du principe que votre ou vos serveurs Apache/Mysql sont configurés et pleinement fonctionnels.

 

Informations utiles :

Même si la configuration du proxy NGINX est spécifique à un site WordPress pour la mise en cache, la configuration a été testé sur les CMS suivants et elle est parfaitement fonctionnelle :

  • WordPress
  • Mybb
  • Owncloud
  • BilboPlanet

 

Installation et configuration :

Tout d’abord, la configuration va être faite sur le principe du Catch All VHost ce qui veut dire que ça englobe tous les sites en une seule configuration.

 

Cette procédure n’est pas compatible avec un serveur multi-ip !

 

Accrochez vous, il m’a fallu 3 heures, un mal de crâne et une bière pour vous pondre ça :

 

La première chose à faire, c’est de stopper le service apache avec un petit coup de

service apache2 stop

 

On va modifier les ports dans la configuration d’apache :

nano /etc/apache2/ports.conf
#NameVirtualHost *:82
Listen 82

 

Ensuite, on va modifier tous les virtualhost qui écoutent sur le port 80 :

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

 

On relance apache

service apache2 start

 

Et nous testons que la configuration soit Ok, normalement, le port 80 ne devrait pas apparaître

 netstat -tunap | grep apache2
tcp6 0 0 :::8080 :::* LISTEN 3259/apache2
tcp6 0 0 :::8081 :::* LISTEN 3259/apache2
tcp6 0 0 :::82 :::* LISTEN 3259/apache2
tcp6 0 0 :::443 :::* LISTEN 3259/apache2

 

Maintenant, on va modifier les templates par défaut d’Isp Config pour Apache. On va d’abord les copiées dans le dossier de custom conf :

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

 

Ensuite, modifiez ce fichier pour remplacer le port 80 par le port 82 :

nano /usr/local/ispconfig/server/conf-custom/apache_ispconfig.conf.master
----> ( variable "NameVirtualHost *:" à la ligne 123 )

 

Maintenant on va avoir un problème, car pour les outils de statistiques, entre autre … TOUTES les requêtes viendront d’adresse 127.0.0.1. Pas pratique n’est ce pas ?

Pour résoudre le problème, on va installer le mod rpaf :

apt-get install libapache2-mod-rpaf

 

Ensuite, éditez la configuration d’apache

nano /etc/apache2/apache2.conf

 

et rajoutez ça à la fin :

RPAFsethostname On
RPAFproxy_ips 127.0.0.1 IP_DE_VOTRE_SERVEUR

 

On relance Apache maintenant :

service apache2 restart

 

Maintenant, on passe à la partie ou qui m’a donné mal à la tête, la configuration de Nginx.

 

Mettre à jour Debian

 

On va commencer par mettre la liste des sources de Debian à jour, pour ce faire, tapez la commande suivante

nano /etc/apt/sources.list

 

Et ajoutez ces sources après vos repository

deb http://nginx.org/packages/debian/ wheezy nginx
deb-src http://nginx.org/packages/debian/ wheezy nginx

 

 

Lancez maintenant la commande

apt-get update && apt-get upgrade

 

pour mettre à jour votre installation

Après, on installe NGINX avec la commande suivante et on le stop tout de suite :

apt-get install nginx
service nginx stop

 

Ensuite, on se rend dans le répertoire de NGINX :

cd /etc/nginx/

 

Et on édite la configuration de NGINX :

nano nginx.conf

 

La seule chose à modifier, c’est le worker_processes, à faire correspondre avec le nombre de cœurs de votre processeur. Sauvegardez.

Ensuite on se rend dans le dossier conf.d :

cd conf.d

 

Et on gicle de suite la configuration par défaut :

rm default.conf

 

Ensuite, re-créez le fichier default.conf :

nano default.conf

 

Et remplissez le avec ceci ( c’est en écrivant cette configuration que j’ai eu mal au crâne, profitez en ! 🙂 )

server {
 listen 80 default;
 server_name _;
 server_name_in_redirect off;
 resolver 127.0.0.1;
 access_log /var/log/ispconfig/httpd/$host/nginx-access.log;


location ~* ^/var/www/$host/web/(wp-content|wp-includes)/(.*)\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|css|midi|wav|bmp|rtf|js|swf|flv|html|htm|mp3|mp4)$ {
 root /var/www/$host/web/(wp-content|wp-includes);
 access_log off;
 expires 30d;
 set $memcached_key "$uri?$args";
 memcached_pass 127.0.0.1:11211;
 error_page 404 502 504 = @fallback;

 }
location / {
 root /var/www/$host/web;
 index index.html index.htm index.php;
 access_log off;
 proxy_pass http://127.0.0.1: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;
}
}

 

Pour faire propre, redémarrez votre serveur :

reboot

 

Et voilà, si vous avez tout suivi, nginx sera activé sur tous les sites que vous avez créés avec Isp Config et sur ceux qui seront créés à l’avenir !

Au final, plus personne ne sait que vous tournez sur Apache derrière :

ispconfig3+apache+nginx-final

 

 

Voilà, la configuration pour l’IPV6 arrive bientôt !

 

A propos de l'auteur

Nicolas Simond

Ingénieur Systèmes et Réseaux et guitariste hard rock et metal à mes heures perdues.
Je suis le créateur et l'unique rédacteur d'Abyss Project, c'est ici que je note la plupart de mes procédures et quelques divagations.

Si vous l'article vous a aidé, pensez à me payer un café :)

Subscribe
Notify of
guest

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

17 Commentaires
Plus récents
Plus anciens Populaires
Inline Feedbacks
View all comments
RATEFIARISON Aina Manoa
7 années plus tôt

Pour ceux qui ont constaté qu’il y a un petit soucis avec le fichier de config NGINX (elle renvoie tous les requêtes sur un seul site), vous pouvez regarder sur mon site la version « mise à jour » du fichier default.conf qui fonctionne bien sur ISPConfig 3.1 : http://manoaratefy.hostibox.com/2016/11/reverse-proxy-nginx-ispconfig-3-1/

wash34
wash34
8 années plus tôt

J’ai resolu une partie du probleme avec ceci :
#### get url without www to have correct path ####
set $rawdomain $host;
if ($host ~* ^(www\.)(.+)) {
set $rawdomain $2;
}

wash34
wash34
8 années plus tôt

Salut, merci pour ce tuto. J’ai remarqué que dans les dernières version d’isp le port 80 n’est plus inscrit directement dans conf/vhost.conf.master, il mis en variable depuis ./plugins-available/apache2_plugin.inc.php. De plus j’ai le meme probleme que Mathias, tous mes sites se trouve sur la meme IP et du coup j’ai tous les sites qui redirige vers le meme site. Aurais tu une solution (je ne voudrais pas passer à une version full nginx sans apache ? Dernier petit problème, mes site sont configurés sans les www sous isp mais j’active une redirection vers www afin d’avoir plus de souplesse dans la… Voir plus »

Olivier
Olivier
8 années plus tôt

Bonjour,

Tout d’abord, petit détail, il me que vos articles s’inspirent largement du travail de Nedim Hadzimahmutovic que l’on trouve ici (https://www.howtoforge.com/nginx-catch-all-host-as-front-end-to-apache-for-ispconfig-3-on-debian-lenny). Il me semble qu’il serait intéressant de citer les sources qui vont ont certainement soulagé le mal de tête.

En dehors de cela, votre article est bien fait, mais en ce qui me concerne, je n’arrive pas à savoir si Nginx est lui même en frontal reverse proxy d’ispconfig ou bien est-ce Apache directement sur le port 8080?

Merci pour vos réponses.

iooner
Reply to  Olivier
8 années plus tôt

Aurais-tu l’obligeance dans ta plus grande mansuétude de cesser de manière immédiate et définitive de déblatérer des inepties ?

Autrement dit. Ta gueule et retourne lire HowToForge.
(Cet avis n’engage que moi ;))

Guillaume
Guillaume
8 années plus tôt

Super, merci pour le tuto! Quelqu’un à t’il tester avec Prestashop?

Nicocolt
Nicocolt
8 années plus tôt

Hello

Super ! Comment ça se passe avec des sous domaines configurés dans ISPConfig ? Pour les sous domaines on positionne obligatoirement un redirect Apache. Est-il conservé ?

Merci
Nico

Mathias
Mathias
8 années plus tôt

Exact et bien vu !

Niveau performance Nginx en solo c’est mieu qu’en reverse proxy ?

Le problème s’est résolu dans la nuit et au réveil s’est revenu , monde de fou

Mathias
Mathias
Reply to  Mathias
8 années plus tôt

Seul truc qui m’angoisse , c’est de convertir mon Htaccess d’un blog wordpress assez chargé avec en plus des scripts de blocages de bot . :s

je crois que les seules différences de config sont les vhosts ( pour eux ca ira ) et le htaccess.

( je viens de restart apache , et ca a tout remis dans l’ordre au deuxieme coup .. )

je pense que je franchirai le pas quand je changerai de serveur .

Mathias
Mathias
8 années plus tôt

Salut et merci pour ce site au top !

J’ai décidé de franchir le pas et mettre avec mon ISP le petit Nginx.

Mais jai eu un petit probleme , mon VPS heberge 3 sites differents et apres avoir suivi ce tuto , tous mes noms de domaines renvoyaient vers le même site. Comme si

location / {
root /var/www/$host/web;

n’etait pas suivi .

J’ai fait marche arriére en suivant le tuto à l’envers sans désinstaller nginx.

Vois tu d’où ca peut venir ?

merci bien 🙂