2 votes

Erreur de proxy 502 "Erreur de lecture à partir du serveur distant" Apache 2.4.18 Ubuntu avec HTTPS dans le conteneur Docker

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.

0voto

Freddy Points 627

J'ai également fouillé en profondeur sur le web et j'ai essayé toutes les solutions et suggestions que j'ai pu trouver jusqu'à présent.

L'erreur dans le journal ne donne pas beaucoup d'indications mais ce qui l'a résolue pour moi a été d'ajouter une directive permettant certains protocoles de chiffrement obsolètes pour le serveur proxifié, apache coyote dans mon cas.

Ajoutez la directive SSLProxyCipherSuite. https://httpd.apache.org/docs/current/mod/mod_ssl.html#sslproxyciphersuite

Les valeurs peuvent être copiées et collées à partir d'ici : https://wiki.mozilla.org/Security/Server_Side_TLS

Essayez probablement les Suites de chiffrement (TLS 1.0 - 1.2) : ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA

Et voyez si cela fait fonctionner les choses et les sécuriser davantage à partir de là.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X