URL: https://linuxfr.org/forums/linux-general/posts/reverse-proxy-apache-serveur-backend-connexion-reset-by-peer
Title: reverse proxy Apache + serveur backend = connexion reset by peer
Authors: popof
Date: 2015年11月24日T10:05:42+01:00
License: CC By-SA
Tags: httpd, mod_proxy, proxy et ubuntu
Score: 0
Bonjour les linuxiens,
Je souhaiterai avoir quelques explications sur la configuration de serveurs apache en mode reverse proxy, avec des serveurs applicatifs apache.
J'ai monté pour ma boite actuelle, des environnements "haute dispo" et "redondés" en mode direct routing :
- 2 Loadbalancers piranha - nommés lb1 et lb2 - (centos6.5) avec une VIP. Le noeud actif redirige mode WLC les requêtes sur les 2 reverse proxy
- 2 reverse proxy apache - nommés rp1 et rp2 -(centos6.5) qui redirigent les connexions vers des serveurs d'arrière plan (backend)
- 1 serveur applicatif - nommé app - (centos6.5) apache/php5/etc. Il y aura d'autres serveurs applicatifs après.
En mode direct routing, ce sont les reverse proxy qui répondent aux clients sans que la requête ne passe par les loadbalancers.
VOilà, le cadre est posé :-)
Si je fais appel à vous c'est bien évidemment parce qu'il y a un souci sur lequel je bute depuis un petit moment.
Lorque je me connecte sur ma VIP (via mes navigateurs favoris), j'accède bien à la page d'accueil de mon site (hébergé sur app1). (ex : http://vip/index.php)
lb1 (actif) et lb2 fonctionnent correctement.
rp1 (httpd arrêté) et rp2 (httpd démarrré)
app renvoi bien les pages que je demande.
je vais sur une app (ex : http://vip/app1/index.php), ca fonctionne.
Je fais quelques tests dans l'app1 (essentiellement des validations de formulaire qui vont faire des selections dans une base de données).
Les petites requêtes semblent fonctionner mais dès que la requête semble durer trop longtemps : **messages d'erreurs** dans mon navigateur:
POST https://vip/app1/ws/ws1.php net::ERR_CONNECTION_RESET
Côté RP il faut attendre quelques minutes pour voir le logs
```bash
==> /var/log/httpd/extranet.error.log <== [Tue Nov 24 09:26:06 2015] [error] [client ipcliente] (70007)The timeout specified has expired: proxy: error reading status line from remote server app1.domaine.fr, referer: https://vip/app1/index.php [Tue Nov 24 09:26:06 2015] [error] [client ipcliente] proxy: Error reading from remote server returned by /app1/ws/ws1.php, referer: https://vip/app1/index.php ==> /var/log/httpd/extranet.access.log <== ipcliente - - [24/Nov/2015:09:23:06 +0100] "POST /app1/ws/ws1.php HTTP/1.1" 502 434 "https://vip/app1/index.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/45.0.2454.101 Chrome/45.0.2454.101 Safari/537.36" ipcliente - - [24/Nov/2015:09:22:20 +0100] "POST /app1/ws/ws1.php HTTP/1.1" 200 14187 "https://vip/app1/index.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/45.0.2454.101 Chrome/45.0.2454.101 Safari/537.36" ``` Côté app, l'erreur apparaît au même moment : ```bash ==> /var/log/httpd/extranet.error.log <== [Tue Nov 24 09:28:39 2015] [info] [client rp2] (32)Relais brisé (pipe): core_output_filter: writing data to the network ==> /var/log/httpd/extranet.access.log <== rp2 - - [24/Nov/2015:09:23:06 +0100] "POST /app1/ws/ws1.php HTTP/1.0" 200 16652 "https://vip/app1/index.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/45.0.2454.101 Chrome/45.0.2454.101 Safari/537.36" ``` Voyant cela, j'ai essayé d'optimiser les serveurs apache un peu de partout... Mais rien n'y fait! Pas moyen d'utiliser mes reverse proxy. Quand je tests en contactant directement l'app1 (http://app/app1/index.php) tout fonctionne, je n'ai pas ces problèmes de coupures de connexion. Je ne peux pas remettre en cause les connexions app <-> base oracle, puisque en contactant le serveur backend en direct tout fonctionne.
Je ne suis pas un expert apache mais j'ai pris le temps de lire [les documentations officielles](http://httpd.apache.org/docs/2.2/mod/mod_proxy.html)
VOici la configuration de mes serveurs apache :
RP :
```bash
NameVirtualHost *:443