Je ne suis pas un expert et je ne vois pas quel est le problème, mais évidemment cette erreur est causée par un petit détail qu'il semble que je ne peux pas déboguer. Une idée ?
Ce que j'ai : J'ai plusieurs hôtes virtuels configurés avec Apache2 qui gèrent le trafic vers différents sites Web. Tous en https grâce à Let'sEncrypt certbot et cela fonctionne bien.
Apache 2.4.18 (Ubuntu) Serveur : Ubuntu 16.04 Version de Docker : 19.03.5
Ce que j'essaie de faire :
Je veux ajouter un conteneur Docker au mix tout en conservant ma configuration actuelle avec Apache. Je sais que je peux utiliser quelque chose comme nginx reverse companion et je le fais déjà sur un autre serveur mais je ne veux pas le faire dans ce cas.
Dans cette configuration, j'essaie de configurer un hôte virtuel agissant en tant que proxy inverse dans Apache qui redirigera le trafic vers le conteneur Docker correspondant (exécutant un conteneur Wordpress comme test, mais je voudrais le faire avec plusieurs applications à l'avenir). Je sais que c'est en français mais j'ai trouvé ce gars qui essaie de faire exactement la même chose que moi ici
Ce que j'ai fait :
J'ai fait à peu près la même chose que dans le didacticiel lié ci-dessus.
-
Fichier docker-compose :
version: '3.3'
services:
wordpress: depends_on: - db container_name: ${CONTAINER_WP_NAME} image: wordpress:${WORDPRESS_IMAGE} ports:
- 8080:80
- 8081:443 restart: always environment: WORDPRESS_DB_HOST: ${CONTAINER_DB_NAME}:3306 WORDPRESS_DB_USER: ${MYSQL_USER} WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD} WORDPRESS_DB_NAME: ${MYSQL_DATABASE} WORDPRESS_TABLE_PREFIX: ${WORDPRESS_TABLE_PREFIX} volumes: - ${WP_CORE}:/var/www/html - ${WP_CONTENT}:/var/www/html/wp-content - ./docker/config/vhost.conf:/etc/apache2/sites-enabled/vhost-ssl.conf - /etc/letsencrypt:/etc/letsencrypt:ro
-
Fichier de configuration vhost pour le conteneur
ServerName mydomaine.tld DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/mydomaine.tld/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/mydomaine.tld/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/mydomaine.tld/chain.pem SSLOptions +StdEnvVars SSLOptions +StdEnvVars
-
Fichier sites-availabe/mydomaine.conf pour apache2
ServerName mydomaine.tld ProxyPreserveHost On ProxyPass / http://localhost:8081/ retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse / http://localhost:8081/ ProxyPassReverseCookieDomain localhost mydomaine.tld ErrorLog /srv/logs/error/mydomaine.log CustomLog /srv/logs/access/mydomaine.log combined
RewriteEngine on RewriteCond %{SERVER_NAME} =mydomaine.tld RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
-
Fichier sites-available/mydomaine-le-ssl.conf pour apache2
ServerName mydomaine.tld ProxyPreserveHost On SSLProxyEngine On SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off SSLProxyCheckPeerExpire off ProxyPass / https://localhost:8081/ retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse / https://localhost:8081/ ProxyPassReverseCookieDomain locahost mydomaine.tld ProxyRequests Off ErrorLog /srv/logs/error/slice.log CustomLog /srv/logs/access/slice.log combined SSLCertificateFile /etc/letsencrypt/live/mydomaine.tld/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/mydomaine.tld/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/mydomaine.tld/chain.pem Include /etc/letsencrypt/options-ssl-apache.conf
Mon problème : Sans SSL ça fonctionne bien mais une fois que j'active SSL et que je me branche sur le port 443 pour me connecter au site via HTTPS, j'ai une Erreur de Proxy 502 dans le navigateur :
Erreur de Proxy
Le serveur proxy a reçu une réponse non valide d'un serveur en amont.
Le serveur proxy n'a pas pu gérer la requête
Raison : Erreur de lecture depuis le serveur distant
Et les journaux du site Web renvoient cette erreur :
AH00898: Erreur de lecture depuis le serveur distant renvoyé par /
AH01102: erreur de lecture de la ligne d'état depuis le serveur distant localhost:8081
Ce que j'ai essayé :
J'ai lu presque tous les problèmes sur ce type d'erreur et je n'ai pas pu le déboguer. Je vois que cet utilisateur a exactement les mêmes erreurs que moi, mais sa solution n'a pas résolu mon problème. J'ai essayé d'utiliser les ports 80 ET 443 dans le conteneur Docker mais cela ne change rien ; sans redirection http:// fonctionne mais pas https://. Chaque fois j'ai la même erreur.
J'ai activé les packages nécessaires et recommandés et je n'ai pas d'autre erreur que ceux que j'ai décrits.