Bonjour,
Actuellement sur mon serveur, j'utilise HAPROXY, j'ai 3 containers rutorrent (mondédié), 3 utilisateurs authentifiés , et pour un même host "rutorrent.exemple.com"; tout fonctionne, chaque utilisateur est bien dirigé vers le bon backend:
global
.../...
defaults
.../...
userlist user1
user user1 password xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
userlist user2
user user2 password xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
userlist user3
user user. password xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
frontend http-in
.../...
frontend https-in
.../...
acl auth hdr_beg(host) rutorrent.
acl is_user1 http_auth(user1)
acl is_user2 http_auth(user2)
acl is_user3 http_auth(user3)
http-request auth realm auth if auth !is_user1 !is_user2 ! is_user3
.../...
use_backend rutorrent1 if is_user1
use_backend rutorrent2 if is_user2
use_backend rutorrent3 if is_user3
.../...
backend rutorrent1
mode http
.../...
server rutorrent1 127.0.0.1:18480 maxconn 32
backend rutorrent2
.../...
server rutorrent2 127.0.0.1:18580 maxconn 32
backend rutorrent2
.../...
server rutorrent3 127.0.0.1:18680 maxconn 32
J'ai voulu tester TREAFIK qui me parait plus friendly; mais je bloque pour trouver une solution qui fonctionne, je fontionne le plus possible en dynamique, et j'ai testé ceci "rutorrent.yml":
http:
services:
rutorrent1:
loadBalancer:
servers:
- url: "http://rutorrent1:80"
rutorrent2:
loadBalancer:
servers:
- url: "http://rutorrent2:80"
rutorrent3:
loadBalancer:
servers:
- url: "http://rutorrent3:80"
routers:
rutorrent1:
rule: "Host(`rutorrent.exemple.com`)"
entryPoints:
- "web"
middlewares:
- "redirect-to-https@file"
service: "noop@internal"
rutorrent1-secure:
rule: "Host(`rutorrent.exemple.com`)"
entryPoints:
- "websecure"
middlewares:
- "user1-auth@file"
- "hsts@file"
- "security@file"
- "compression@file"
service: "rutorrent1-traefik@docker"
tls:
certResolver: cloudflare
options: mintls13
rutorrent2:
rule: "Host(`rutorrent.exemple.com`)"
entryPoints:
- "web"
middlewares:
- "redirect-to-https@file"
service: "noop@internal"
rutorrent2-secure:
rule: "Host(`rutorrent.exemple.com`)"
entryPoints:
- "websecure"
middlewares:
- "user2-auth@file"
- "hsts@file"
- "security@file"
- "compression@file"
service: "rutorrent2-traefik@docker"
tls:
certResolver: cloudflare
options: mintls13
rutorrent3:
rule: "Host(`rutorrent.exemple.com`)"
entryPoints:
- "web"
middlewares:
- "redirect-to-https@file"
service: "noop@internal"
rutorrent3-secure:
rule: "Host(`rutorrent.exemple.com`)"
entryPoints:
- "websecure"
middlewares:
- "user3-auth@file"
- "hsts@file"
- "security@file"
- "compression@file"
service: "rutorrent3-traefik@docker"
tls:
certResolver: cloudflare
options: mintls13
J'ai aussi testé en faisant 3 fichiers yml différents, mais idem...
L'authentification pour l'user1 est systématiquement refusée, mais fonctionne pour l'user2 ; j'ai l'impression que TRAEFIK n'arrive pas à diriger en fonction de l'user comme le fait HAPROXY.
Le fichier auth est bon, puisque pour d'autres containers mono-utilisateur il fonctionne.
Vos lumières s'il vous plait, si quelqu'un a une idée
***Edit: Bien sur, la solution de facilité serait de créer 3 hosts "rutorrent1.exemple.com, rutorrent2.exemple.com, rutorrent2.exemple.com" ça je sais le faire et ça fonctionne, mais j'aime la difficulté et me battre pour comprendre.