reverse proxy

Avatar du membre
yahaha
Messages : 1208
Enregistré le : ven. 12 janv. 2018 17:44
Localisation : Bruxelles

reverse proxy

Message par yahaha » lun. 29 juil. 2019 10:26

hello par ici
nouvelle demande

j'ai actuellement un Nginx en reverse proxy, qui route les requetes vers différents server
ex : web vers lui même (il fait server web aussi), nextcloud vers ma vm nextcloud, vpn vers mon container openvpn,...

j'ai récemment déployé un container (que j'abrègerai en CT) webserver, pour que le reverse proxy ne fasse plus que reverse proxy.

Ca fonctionne !
mondomaine.com va bien sur le CTweb. par contre la ou je sèche ce que je veux aussi envoyé subdomaine.mondomaine.com dessus mais vers une app spécifique (wallabag)
Que dois-je faire au niveau du nginx du CT web pour que ça route vers cette app? (niveau reverse proxy je suis ok)
mes config RP wallabag
server{
if ($host = wallabag.nomdedomain.com) {
return 301 https://$host$request_uri;
} # managed by Certbot


listen 80;
server_name www.wallabag.nomdedomain.com wallabag.nomdedomain.com;
return 301 https://$server_name$request_uri; #Redirection



}

server {
listen 443;
server_name www.wallabag.nomdedomain.com wallabag.nomdedomain.com;

location / {
include proxy_params;
proxy_pass IP DU CONTAINER;
}
ssl_certificate /etc/letsencrypt/live/wallabag.nomdedomain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/wallabag.nomdedomain.com/privkey.pem; # managed by Certbot


}
config sur le CT webserver
server {
listen 0.0.0.0:80;
root /var/www/nomdedomain.com/html;
index index.html index.php;

include /etc/nginx/include/php;
}

server {
listen 443 ssl;
root /var/www/nomdedomain.com/html;
index index.html index.php;

fastcgi_param HTTPS on;
include /etc/nginx/include/ssl;
include /etc/nginx/include/php;
}

QUe dois-je ajouter dans la config nginx du CT pour qu'en cas d'appel de wallabag.nomdedomain.com ça envoie dans le dossier qui contient wallabag et pas dans le root de nomdedomain.com ?

la solution de facilité serait de faire un CT rien que pour wallabag, et de renvoyer dans le reverse proxy vers l'ip de ce CT, mais bon je voudrais que tout les services web soient sur un seul CT

merci

Avatar du membre
Zedoune
Messages : 14450
Enregistré le : ven. 12 janv. 2018 17:44

Re: reverse proxy

Message par Zedoune » lun. 29 juil. 2019 11:39

il faut configurer le serveur web de CT pour utiliser des hostname, du coup quand il recevra la requête il utilisera un site ou l'autre en fonction du nom de domaine utilisé pour la requête.

Sinon tu déploies un deuxième CT sur un port différent ou avec une IP différente.

Ou sinon tu déploies 0 CT et tu fais faire le travail à Nginx au lieu de faire du proxy sur la même machine ^^

gizmo78
Messages : 16469
Enregistré le : ven. 12 janv. 2018 17:44

Re: reverse proxy

Message par gizmo78 » lun. 29 juil. 2019 11:45

et si tu veux t'amuser : tu vire nginx en reverse proxy et tu utilise haproxy avec des acl en fonction du ndd qui est appelé

Avatar du membre
yahaha
Messages : 1208
Enregistré le : ven. 12 janv. 2018 17:44
Localisation : Bruxelles

Re: reverse proxy

Message par yahaha » lun. 29 juil. 2019 12:10

Zedoune a écrit :
lun. 29 juil. 2019 11:39
il faut configurer le serveur web de CT pour utiliser des hostname, du coup quand il recevra la requête il utilisera un site ou l'autre en fonction du nom de domaine utilisé pour la requête.

Sinon tu déploies un deuxième CT sur un port différent ou avec une IP différente.

Ou sinon tu déploies 0 CT et tu fais faire le travail à Nginx au lieu de faire du proxy sur la même machine ^^
j'y ai pensé, mais un CT par service ça va vite faire 6-7 ct...

et pour tout sur nginx c'est ce que j'avais, mais c'était trop simple :whistle:
gizmo78 a écrit :
lun. 29 juil. 2019 11:45
et si tu veux t'amuser : tu vire nginx en reverse proxy et tu utilise haproxy avec des acl en fonction du ndd qui est appelé
pourquoi HAproxy est mieux que nginx en RP?

Avatar du membre
poulpito
Messages : 11039
Enregistré le : ven. 12 janv. 2018 17:44
Localisation : Grenoble

Re: reverse proxy

Message par poulpito » lun. 29 juil. 2019 12:24

il est plus simple d'utilisation :)
en ce qui me concerne c'ets ce que j'ai trouvé c'est pour ca que j'utilise que lui

gizmo78
Messages : 16469
Enregistré le : ven. 12 janv. 2018 17:44

Re: reverse proxy

Message par gizmo78 » lun. 29 juil. 2019 12:26

pour du reverse proxy oui clairement je le trouve plus simple et tant que tu fais de l'acl basic ça va vite

Avatar du membre
yahaha
Messages : 1208
Enregistré le : ven. 12 janv. 2018 17:44
Localisation : Bruxelles

Re: reverse proxy

Message par yahaha » lun. 29 juil. 2019 12:29

ouai enfin c'est pas mon but, je suis content avec nginx, donc je vais déjà essayer ce que disait zed de travailler avec les hostnames, après on verra pour un éventuel futur upgrade

Avatar du membre
Zedoune
Messages : 14450
Enregistré le : ven. 12 janv. 2018 17:44

Re: reverse proxy

Message par Zedoune » lun. 29 juil. 2019 12:57

en fait nginx il fait le café, en tant que proxy il peut aussi faire du cache ou des conditions. haproxy il est plus basique et n'est pas spécifique à http. haproxy vise les hautes performances et la fiabilité, et peut rediriger au bon endroit en fonction d'un hostname en se basant sur les headers du protocole http.

gizmo : au travail j'ai un nginx en reverse proxy mais pour certains hostnames, en fonction de l'url (après le domaine) genre /toto/ et /tata/ c'est pas redirigé vers la même destination, c'est possible avec haproxy ?

Avatar du membre
poulpito
Messages : 11039
Enregistré le : ven. 12 janv. 2018 17:44
Localisation : Grenoble

Re: reverse proxy

Message par poulpito » lun. 29 juil. 2019 13:08

oui de mémoire avec path_beg

Avatar du membre
yahaha
Messages : 1208
Enregistré le : ven. 12 janv. 2018 17:44
Localisation : Bruxelles

Re: reverse proxy

Message par yahaha » lun. 29 juil. 2019 13:13

Zedoune a écrit :
lun. 29 juil. 2019 12:57
en fait nginx il fait le café, en tant que proxy il peut aussi faire du cache ou des conditions. haproxy il est plus basique et n'est pas spécifique à http. haproxy vise les hautes performances et la fiabilité, et peut rediriger au bon endroit en fonction d'un hostname en se basant sur les headers du protocole http.

gizmo : au travail j'ai un nginx en reverse proxy mais pour certains hostnames, en fonction de l'url (après le domaine) genre /toto/ et /tata/ c'est pas redirigé vers la même destination, c'est possible avec haproxy ?
c'est ça que je vais mettre en place

gizmo78
Messages : 16469
Enregistré le : ven. 12 janv. 2018 17:44

Re: reverse proxy

Message par gizmo78 » lun. 29 juil. 2019 13:42

Z : comme le dit poulpito, path_beg dans une acl qui va bien

et dans nginx faut faire des location /tata { }

Avatar du membre
Zedoune
Messages : 14450
Enregistré le : ven. 12 janv. 2018 17:44

Re: reverse proxy

Message par Zedoune » lun. 29 juil. 2019 15:18

cool :)

enfin nginx fonctionne pour le moment, j'ai pas de raison de toucher... mais bon à savoir

Avatar du membre
yahaha
Messages : 1208
Enregistré le : ven. 12 janv. 2018 17:44
Localisation : Bruxelles

Re: reverse proxy

Message par yahaha » lun. 29 juil. 2019 15:49

j' :love: ce partage de connaissances et ce déviations de sujet qui font remettre une bete demande en possibilité de changement profond de config :whistle:

Avatar du membre
Zedoune
Messages : 14450
Enregistré le : ven. 12 janv. 2018 17:44

Re: reverse proxy

Message par Zedoune » lun. 29 juil. 2019 18:02

sinon y a relayd à la place de haproxy, mais il marche que sur OpenBSD / FreeBSD :D (je me demande bien ce qui empêche le portage d'ailleurs :??: )

c'est plus simple que haproxy :whistle:

thib3113
Messages : 28
Enregistré le : mar. 9 juil. 2019 11:54
Localisation : Toulouse

Re: reverse proxy

Message par thib3113 » lun. 29 juil. 2019 18:28

juste pour partager mon expérience, perso j'utilise traefik .

Car il gère les containers docker (et que j'en utilise)
Car il gère les certificats letsencrypt à ma place (mais galère de les exporter, faut lancer un script)
Car il est plutôt simple à configurer .

Car les devs sont lyonnais :lol:

Avatar du membre
Zedoune
Messages : 14450
Enregistré le : ven. 12 janv. 2018 17:44

Re: reverse proxy

Message par Zedoune » mar. 30 juil. 2019 17:46

ça m'a quand même l'air compliqué à appréhender vu la doc non ? ^^

thib3113
Messages : 28
Enregistré le : mar. 9 juil. 2019 11:54
Localisation : Toulouse

Re: reverse proxy

Message par thib3113 » mar. 30 juil. 2019 19:14

Zedoune a écrit :
mar. 30 juil. 2019 17:46
ça m'a quand même l'air compliqué à appréhender vu la doc non ? ^^
Une fois que tu as compris le fonctionnement, non pas trop . Et au pire, ya pleins de gens sur slack près à aider .

Exemple avec ma conf :

Code : Tout sélectionner

#loglevel et compagnie
debug = false

logLevel = "INFO"
defaultEntryPoints = ["https","http"]
insecureSkipVerify = true
sendAnonymousUsage = true

#on active la page d'admin
[api]

#on indique les ports à utiliser, si on redirige http => https, et des certificats en plus de letsencrypt (pour domaine local dans mon cas) (traefik prendra le bon en fonction)
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]
    [[entryPoints.https.tls.certificates]]
    certFile = "/site.lan.crt"
    keyFile = "/site.lan.key"

#je le mappe sur docker pour qu'il s'occupe automatiquement de rendre accessible les containeurs configurés
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "site.com"
watch = true
swarmMode = true

# j'ajoute quelques redirection à la main, backend = derrière le revers, frontend devant
[file]
  [backends]
    [backends.nas]
      [backends.nas.LoadBalancer]
      method = "drr"
      [backends.nas.servers.server1]
      url = "https://192.168.1.38"
      weight = 1
    [backends.teapot]
      [backends.teapot.LoadBalancer]
      method = "drr"
      [backends.teapot.servers.server1]
      url = "https://192.168.1.40"
      weight = 1
    [backends.omv]
      [backends.omv.LoadBalancer]
      method = "drr"
      [backends.omv.servers.server1]
      url = "http://192.168.9.3"
      weight = 1


  [frontends]
    [frontends.nas]
    backend = "nas"
    passHostHeader = true
      [frontends.nas.routes.test]
      rule = "Host: nas.site.com"
    [frontends.teapot]
    backend = "teapot"
    passHostHeader = true
      [frontends.teapot.routes.test]
      rule = "Host: teapot.site.com"
    [frontends.tpt]
    backend = "teapot"
    passHostHeader = true
      [frontends.tpt.routes.test]
      rule = "Host: tpt.site.com"
    [frontends.omv]
    backend = "omv"
    passHostHeader = true
      [frontends.omv.routes.test]
      rule = "Host: omv.site.lan"

[acme]
#juste à conf mon email, comment je veux stocker les certificats, si je veux un certificat / site, et comment faire le acme challenge (compatible letsencrypt, mais pas que)
email = "aaaa@site.com"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"
Et c'est tout en terme de conf de traefik .

Pour ma part il tourne dans un container docker, et j'ai mappé le acme.json en local + ce fichier de conf, le certificat et sa clef ... et il me gère tout mes revers proxy ...
et quand je déplois un container docker, j'ai juste à rajouter qqc comme ça :

Code : Tout sélectionner

     labels:
      - "traefik.frontend.rule=Host:gitserver.site.com"
      - "traefik.docker.network=web"
      - "traefik.enable=true"
      - "traefik.frontend.passHostHeader=true"
      - "traefik.backend.loadbalancer.method=drr"
      - "traefik.port=443"
      - "traefik.protocol=https"
et traefik va s'occuper de rediriger gitserver.site.com, vers https://container:443 . Du coup, si je veux déployer un service web, jpeux faire ça en 2/2, sans jamais touché à la conf de traefik, mais directement à la conf de mon service (et il gère le load balancing and co à ma place) .


à la base j'utilisais le reverse proxy de DSM (un ngninx en gros), et je suis passé à traefik depuis un peu plus d'un an, je l'ai mis partout du coup xD ...

Après, c'est sûr que sans docker, il perds de son interet (il est compatibles avec d'autres trucs, mais je ne connais pas le reste)

Avatar du membre
Zedoune
Messages : 14450
Enregistré le : ven. 12 janv. 2018 17:44

Re: reverse proxy

Message par Zedoune » mar. 30 juil. 2019 19:37

Je ne vis pas dans le même monde malheureusement :D

thib3113
Messages : 28
Enregistré le : mar. 9 juil. 2019 11:54
Localisation : Toulouse

Re: reverse proxy

Message par thib3113 » mar. 30 juil. 2019 19:51

Zedoune a écrit :
mar. 30 juil. 2019 19:37
Je ne vis pas dans le même monde malheureusement :D
ah ?

te faut un truc plus conséquent ? ou pas de docker ?

Avatar du membre
poulpito
Messages : 11039
Enregistré le : ven. 12 janv. 2018 17:44
Localisation : Grenoble

Re: reverse proxy

Message par poulpito » mar. 30 juil. 2019 20:10

docker c'est assez vite surfait par les gourou de l'actu ^^

le bon vieux serveur fullpartition ou les vm à l'ancienne ont encore un bel avenir :D

thib3113
Messages : 28
Enregistré le : mar. 9 juil. 2019 11:54
Localisation : Toulouse

Re: reverse proxy

Message par thib3113 » mar. 30 juil. 2019 20:29

poulpito a écrit :
mar. 30 juil. 2019 20:10
docker c'est assez vite surfait par les gourou de l'actu ^^
Cad ? ( pas trop compris ) .

Sinon pour les vms, j'ai un serveur rack, avec un hyperviseur, et dans "certaines" vm, ya un docker swarm xD .

Avatar du membre
poulpito
Messages : 11039
Enregistré le : ven. 12 janv. 2018 17:44
Localisation : Grenoble

Re: reverse proxy

Message par poulpito » mar. 30 juil. 2019 23:52

bah que tout le monde s'est jeté dessus (docker) alors que beaucoup n'en ont aucunement l'utilité et imposent (des chefs) a des salariés de mettre ca en prod pour faire joli alors que c'est pas adapté aux besoin :)
comme openstack a son époque - et toujours d'ailleurs - quand je vois des mecs déployer ca pour des ensembles de moins de 10 machines ... je vois pas l’intérêt à part dire ' j'ai openstack qui tourne'

:D

thib3113
Messages : 28
Enregistré le : mar. 9 juil. 2019 11:54
Localisation : Toulouse

Re: reverse proxy

Message par thib3113 » mer. 31 juil. 2019 00:32

poulpito a écrit :
mar. 30 juil. 2019 23:52
bah que tout le monde s'est jeté dessus (docker) alors que beaucoup n'en ont aucunement l'utilité et imposent (des chefs) a des salariés de mettre ca en prod pour faire joli alors que c'est pas adapté aux besoin :)
comme openstack a son époque - et toujours d'ailleurs - quand je vois des mecs déployer ca pour des ensembles de moins de 10 machines ... je vois pas l’intérêt à part dire ' j'ai openstack qui tourne'

:D
Ah oui, après il faut en avoir besoin :) .
Perso je sais qu'avec docker, si je change de machine, j'ai juste à copier / coller mes fichiers de confs et zou :D (et les dbs, mais c'est juste un gros dossier) . Et je l'utilise actuellement sur mon projet en prod (pour les microservices déployé en auto dans le swarm) (mais le projet est tout récent, donc prévue pour docker) .
Pas besoin de bouger physiquement un disque ou autre, ou si j'ai deux serveurs en lignes, je peux gérer mes applications depuis un seul. Tout est un max stateless, pour pouvoir à tout moment redémarrer de ses datas (sans scripts, sans intervention, rien à faire) . ( et je suis pas bon en réseau xD, ni pas des masses en sysadmin )

Avatar du membre
Dodo29
Messages : 400
Enregistré le : mer. 24 janv. 2018 19:10
Localisation : Nantes - Brest

Re: reverse proxy

Message par Dodo29 » mer. 31 juil. 2019 01:06

poulpito a écrit :
mar. 30 juil. 2019 23:52
bah que tout le monde s'est jeté dessus (docker) alors que beaucoup n'en ont aucunement l'utilité et imposent (des chefs) a des salariés de mettre ca en prod pour faire joli alors que c'est pas adapté aux besoin :)
comme openstack a son époque - et toujours d'ailleurs - quand je vois des mecs déployer ca pour des ensembles de moins de 10 machines ... je vois pas l’intérêt à part dire ' j'ai openstack qui tourne'

:D
:lol: je suis en train de passer sur du public cloud d’OVH :D
Trois instances docker avec swarm et portainer pour le mgmt
Prévu d’y mettre un traefik et de tout gérer en semi-automatique

Pourquoi ?
Plusieurs raisons :
- raz-le-bol d’avoir à gérer une infra de 30 vms sur un esxi
- plus rapide à déployer des microservices (tous mes services web peuvent être dockerisés)
- ca fera de la place sur l’esxi (Que je garde pour les gros services indispensables : vpn, unifi, unifi-video, nas, cloud-privé, labo, etc)

PAR CONTRE je vois que swarm gere pas la synchro des volumes :’(
Et que OVH propose pas de volumes montables à plusieurs endroits à la fois :(
Donc faut que je trouve une solution simple pour qu’à la migration d’un container vers un autre node, il se retrouve pas avec un volume associé qui soit pas à jour

Mais dans le fond je comprend l’etat d’esprit :)
Pour ça d’ailleurs que ce n’est que depuis hier que je passe réellement aux micro services.
Pour le moment c’est toujours
1- vm reverse proxy avec TOUT qui tape dessus (40 et quelques confs différentes avec un letsencrypt « à la main » parce que certbot existait pas à l’epoque pour nginx )
2- docker / vm dédiée / vhost sur vm web

thib3113
Messages : 28
Enregistré le : mar. 9 juil. 2019 11:54
Localisation : Toulouse

Re: reverse proxy

Message par thib3113 » mer. 31 juil. 2019 01:16

dodo, pour les volumes, personnellement je fais avec un nas, et les volumes vont sur les disques en smb . mais c'est sur un meme serveur (esxi) . sur plusieurs serveurs, je fais des serveurs de stockage, et les containers des db sont sur ces serveurs.

sinon, pour les volumes, je crois qu'il y a dez plugins pour faire ça (x-ray qqc comme ça je crois), ou directement en nfs (j'ai vu ça dans portainer)(mais je connais pas nfs).

Répondre