Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/04/2024, à 09:31

Emeric_val

Apache Docker Webcheck

Bonjour,

On dirait que j'ai besoin de votre aide pour déployer ce projet de mon côté :
https://github.com/Lissy93/web-check

La configuration actuelle est la suivante
Ubuntu
Apache2
Docker

Voici ce que j'ai fait
sudo docker pull lissy93/web-check
sudo docker run -p 3000:3000 lissy93/web-check

Je peux accéder à webcheck en utilisant l'url suivante (par exemple) :
https://monsite.com et la configuration apache suivante :

RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.) ws://1.2.3.4:3000/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.) http://1.2.3.4:3000/$1 [P,L]

Mais je souhaite accéder à webcheck par https://mysite.com/webcheck

J'ai donc adapté la configuration d'Apache avec

proxypass /webcheck http://1.2.3.4:3000/
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /webcheck/(.) ws://1.2.3.4:3000/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /webcheck/(.) http://1.2.3.4:3000/$1 [P,L]
ProxyPassReverse /webcheck http://1.2.3.4:3000/

Mais ça ne marche pas. Toujours un problème 404 introuvable.
Avez-vous une idée de comment le faire fonctionner concernant ma configuration ?
Merci beaucoup!

Dernière modification par Emeric_val (Le 08/04/2024, à 09:40)

Hors ligne

#2 Le 08/04/2024, à 10:23

krodelabestiole

Re : Apache Docker Webcheck

utiliser apache comme proxy dans un container docker c'est franchement tordu, je te déconseille, et c'est pas trop comme ça que docker est pensé.

idéalement je te conseillerais traefik avec lequel tu pourrais faire ce que tu veux et beaucoup plus, mais sinon je pense qu'il faudrait plus d'info pour qu'on puisse débuguer ta config, comme le chemin des fichiers, ou l'état de la directive allowoverride - voir doc. (et aussi ce serait beaucoup plus lisible avec les balises code stp)

Dernière modification par krodelabestiole (Le 08/04/2024, à 11:50)

Hors ligne

#3 Le 08/04/2024, à 10:57

xubu1957

Re : Apache Docker Webcheck

Bonjour,

Pour ajouter toi-même les balises code à ton message #1 :

  • Cliquer sur  le lien « Modifier » en bas à droite du message

  • Sélectionner le texte

  • Cliquer sur le <> de l'éditeur de message

moko138 a écrit :

1) Les balises-code sont les < > (crochets bleus) de la barre de mise en forme.

Balisesmoko138.jpg
_ _ _

3) /!\  Si vous avez plusieurs retours à donner, séparez-les bien (toujours pour la lisibilité) :

comme
cela.

Comme demandé dans le premier message du tutoriel Retour utilisable de commande

===========

Lecture conseillée > memento des balises code.

Dernière modification par xubu1957 (Le 08/04/2024, à 12:59)


Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Réso|u] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.                   Membre de Linux-Azur

Hors ligne

#4 Le 08/04/2024, à 12:46

Emeric_val

Re : Apache Docker Webcheck

Bonjour,

Merci pour les modifications et le retour.
Pour plus de détails effectivement, j'utilise Apache en proxy mais il n'est pas dans un docker.
Le docker container webcheck est lancer à part et je souhaite pourvoir le joindre au travers d'apache. D'ailleurs j'arrive bien à le joindre quand je tape par exemple cette adresse https://monsite.com avec la configuration ci-dessous

<VirtualHost *:443>
ServerName monsite.com
ServerAlias www.monsite.com

SSLEngine on
SSLProxyEngine on
SSLVerifyClient require
SSLVerifyDepth 1
SSLCADNRequestFile /home/user/CertificateAuthCA/selfsigned.crt
SSLOptions +StdEnvVars
SSLCACertificateFile /home/user/CertificateAuthCA/selfsigned-ca.crt
DocumentRoot /var/www/monsite.com/

ProxyPass / http://1.2.3.4:11000/site
ProxyPassReverse / http://1.2.3.4:11000/site

SSLCertificateFile /etc/letsencrypt/live/monsite.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/monsite.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*)           ws://1.2.3.4:3000/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*)           http://1.2.3.4:3000/$1 [P,L]
</VirtualHost>

Je ne comprend pas pourquoi je ne parviens plus à le joindre si je modifie ma configuration vers

RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /webcheck/(.) ws://1.2.3.4:3000/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /webcheck/(.) http://1.2.3.4:3000/$1 [P,L]

et en utilisant une url de type  https://monsite.com/webcheck
Merci beaucoup

Dernière modification par Emeric_val (Le 08/04/2024, à 13:00)

Hors ligne

#5 Le 08/04/2024, à 13:02

bruno

Re : Apache Docker Webcheck

Bonjour,

D'abord oui tu peux parfaitement utiliser Apache comme mandataire inverse (reverse proxy) dans ce cas.

Pour que cela fonctionne il faudrait essayer ces modifications des règles réécirture :

RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule ^/webcheck/(.*) ws://1.2.3.4:3000/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule ^/webcheck/(.*) http://1.2.3.4:3000/$1 [P,L]

Mais je trouverais plus propre et plus simple d'utiliser un domaine spécifique webcheck.example.come plutôt que l'emplacement  example.com/webcheck.

#6 Le 08/04/2024, à 13:27

Emeric_val

Re : Apache Docker Webcheck

Bonjour,
Je viens de tenter et malheureusement même résultat.
En regardant les traces réseau FireFox je vois ceci :

Résultat KO avec  https://monsite.com/webcheck

GET
https://monsite.com/webcheck
[HTTP/1.1 200 OK 595ms]

GET
https://no-track.as93.net/js/script.js
[HTTP/2 200  0ms]

GET
https://monsite.com/static/js/main.77abb717.js
[HTTP/1.1 200 OK 538ms]

GET
https://monsite.com/static/css/main.9ed273f0.css
[HTTP/1.1 200 OK 132ms]

Propriété « -moz-osx-font-smoothing » inconnue.  Déclaration abandonnée. index.css:18:2
XHRPOST
https://no-track.as93.net/api/event
[HTTP/3 202  94ms]

GET
https://monsite.com/web-check.png
[HTTP/1.1 200 OK 109ms]

GET
https://monsite.com/logo192.png
[HTTP/1.1 404 Not Found 0ms]

GET
https://monsite.com/favicon.ico
[HTTP/1.1 404 Not Found 0ms]

Résultat ok avec https://monsite.com/

GET https://monsite.com/
https://monsite.com/
[HTTP/1.1 200 OK 800ms]

GET
https://no-track.as93.net/js/script.js
[HTTP/2 200  0ms]

GET
https://monsite.com/static/js/main.77abb717.js
[HTTP/1.1 200 OK 463ms]

GET
https://monsite.com/static/css/main.9ed273f0.css
[HTTP/1.1 200 OK 118ms]

Propriété « -moz-osx-font-smoothing » inconnue.  Déclaration abandonnée. index.css:18:2
XHRPOST
https://no-track.as93.net/api/event
[HTTP/3 202  235ms]

GET
https://i.ibb.co/NKtYjJ1/terminal-trove-web-check.png
[HTTP/1.1 200 OK 0ms]

GET
https://monsite.com/web-check.png

GET
https://monsite.com/logo192.png
[HTTP/1.1 404 Not Found 0ms]

GET
https://monsite.com/favicon.ico
[HTTP/1.1 404 Not Found 0ms]

Hors ligne

#7 Le 08/04/2024, à 14:42

Emeric_val

Re : Apache Docker Webcheck

bruno a écrit :

Bonjour,

D'abord oui tu peux parfaitement utiliser Apache comme mandataire inverse (reverse proxy) dans ce cas.

Pour que cela fonctionne il faudrait essayer ces modifications des règles réécirture :

RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule ^/webcheck/(.*) ws://1.2.3.4:3000/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule ^/webcheck/(.*) http://1.2.3.4:3000/$1 [P,L]

Mais je trouverais plus propre et plus simple d'utiliser un domaine spécifique webcheck.example.come plutôt que l'emplacement  example.com/webcheck.

L'idée est bonne!
utiliser un domaine spécifique webcheck.example.come plutôt que l'emplacement  example.com/webcheck.
Je peux créer le domaine spécifique mais il sera renvoyé vers 1.2.3.4
Du coup coté APACHE, je ne vois pas comment faire puisque tout arrive sur

<VirtualHost *:443>
ServerName monsite.com
ServerAlias www.monsite.com
...

Et il y a en plus la dimension certificat à prendre en compte non?

Hors ligne

#8 Le 08/04/2024, à 15:02

bruno

Re : Apache Docker Webcheck

Tu peux avoir autant d'hôtes virtuels que tu veux qui servent différents domaines. Voir la doc apache
Tu peux avoir un même certificat pour webcheck.example.com et example.com ou deux certificats différents, c'est comme tu veux.

Je ne comprends pas la nécessité d'utiliser un certificat client (directive SSLVerifyClient require et suivantes)

Je ne comprends pas les retour du #6 qui sont identiques dans les deux cas et donnent pour la plupart des cas un code d'état 200, c.-à-d. succès de la requête.

Je ne comprends pas non plus pourquoi l'adresse IP locale est masquée avec 1.2.3.4, ni pourquoi c'est parfois redirigé vers le port 11000, parfois vers le port 3000

#9 Le 08/04/2024, à 15:38

Emeric_val

Re : Apache Docker Webcheck

bruno a écrit :

Tu peux avoir autant d'hôtes virtuels que tu veux qui servent différents domaines. Voir la doc apache
Tu peux avoir un même certificat pour webcheck.example.com et example.com ou deux certificats différents, c'est comme tu veux.

Je ne comprends pas la nécessité d'utiliser un certificat client (directive SSLVerifyClient require et suivantes)

Je ne comprends pas les retour du #6 qui sont identiques dans les deux cas et donnent pour la plupart des cas un code d'état 200, c.-à-d. succès de la requête.

Je ne comprends pas non plus pourquoi l'adresse IP locale est masquée avec 1.2.3.4, ni pourquoi c'est parfois redirigé vers le port 11000, parfois vers le port 3000

Ok pour la première partie. Cependant, pour faire fonctionner webcheck.example.com, je dois au préalable ajouter une redirection de domaine chez mon hébergeur? c'est bien cela?
J'utilise un certificat client pour accéder à mon serveur au lieu d'un login mdp.
Je ne comprends pas non plus les retour du #6
J'utilise mon IP publique dans ma configuration que j'ai modifié par 1.2.3.4 pour ce post
Il y a deux conteneur docker sur mon serveur. Un sur le port 11000 et l'autre sur le port 3000.

Merci beaucoup!

Hors ligne

#10 Le 08/04/2024, à 16:14

bruno

Re : Apache Docker Webcheck

Emeric_val a écrit :

Il y a deux conteneur docker sur mon serveur. Un sur le port 11000 et l'autre sur le port 3000.

Il faut donc deux hôtes virtuels différents avec deux domaines différents.
Chaque nom de domaine doit pointer vers l'IP publique du serveur (enregistrement DNS A et éventuellement AAAA)

Emeric_val a écrit :

J'utilise mon IP publique dans ma configuration que j'ai modifié par 1.2.3.4 pour ce post

ProxyPass / http://1.2.3.4:11000/site
ProxyPassReverse / http://1.2.3.4:11000/site

S'il s'agit bien d'un service tournant dans un conteneur docker l'adresse IP est 127.0.0.1 ou alors il manque une explication sur ta configuration.
De même pour les règles de réécriture pour l'autre service qui est exposé sur le port 3000.

Dernière modification par bruno (Le 08/04/2024, à 16:15)

#11 Le 08/04/2024, à 21:58

krodelabestiole

Re : Apache Docker Webcheck

si tu n'as qu'un autre service à mettre en place, utiliser apache comme reverse proxy peut être une option, mais si tu as dans l'idée de déployer d'autres services plus tard, je te conseille d'entrer de plein pied dans l'écosystème docker en apprenant à utiliser docker compose et traefik, quitte à escalader une courbe d'apprentissage un peu raide au début.
au final ça simplifie vraiment la vie. traefik gère le routing entre tes services et tes domaines (reverse proxy), et simplifie grandement la mise en place de nombreuses autres fonctionnalités :
- automatisation complète de la génération et du renouvellement des certificats
- redirection forcée vers https
- protection de n'importe quel service derrière un mot de passe
etc.
et aussi, grâce à la puissance de docker et parce que traefik peut être entièrement géré depuis un fichier docker-compose, la migration de l'ensemble du système consiste à copier quelques fichiers textes sur une autre machine.

la configuration est au final plus simple que celle d'Apache (niveau d'abstraction plus élevé, donc mieux lisible et nécessite moins de directives "de bas niveau").

en exemple je peux te proposer l'environnement de dev d'ubuntu-fr : https://gitlab.com/ubuntu-fr/code/ufr-dev-env
tout est dans le docker-compose.yml.

Hors ligne

#12 Le 08/04/2024, à 22:41

krodelabestiole

Re : Apache Docker Webcheck

bruno a écrit :

Mais je trouverais plus propre et plus simple d'utiliser un domaine spécifique webcheck.example.come plutôt que l'emplacement  example.com/webcheck.

pareil !

Hors ligne