Arthrax Posté(e) le 5 décembre 2012 Posté(e) le 5 décembre 2012 Bonjour, Je suis en train de tester HAProxy et tout les tutos dispo utilisent des liens : http://application.domain.fr qui redirige vers http://localhost:port_application. Je souhaiterai l'utiliser sous la forme http://domain.fr/application. L'objectif de cette manip est de n'ouvrir qu'un seul port sur le net mais surtout économiser des €€€ en payant qu'un seul certificat SSL Je viens de passer plusieurs heures à regarder la doc de HAProxy et la condition à utiliser dans les associations est if { hdr_end(Host) -i /application } pour lire la valeur en fin de ligne C'est à dire si je tape l'url : http://domain.fr/sab je dois être rediriger vers http://localhost:8080/sabnzbd (je verrais après pour le rewriting ) Malgré tout mes tests je suis toujours redirigé vers le backend par défaut Est-ce que cette version de HAProxy diffère de la version original pour qu'elle puisse fonctionner sur un Syno ? Sinon quelqu'un à une idée de comment faire car la syntaxe me parait bonne? Merci 0 Citer
Diaoul Posté(e) le 6 décembre 2012 Posté(e) le 6 décembre 2012 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23 0 Citer
Arthrax Posté(e) le 7 décembre 2012 Auteur Posté(e) le 7 décembre 2012 Merci pour ce lien qui m'a permis de comprendre mon erreur Du coup, la bonne condition à appliquer est if { path_beg /application } global daemon maxconn 256 log localhost user info spread-checks 10 defaults mode http stats enable default-server inter 30s fastinter 5s log global option httplog timeout connect 5s timeout client 50s timeout server 50s timeout tunnel 1h listen stats :8280 stats uri / stats show-legends stats refresh 10s stats realm Haproxy Statistics stats auth xxxxxx:xxxxx frontend http bind :5080 option http-server-close option forwardfor default_backend web frontend https bind :5443 ssl crt /usr/local/haproxy/var/crt/default.pem option http-server-close option forwardfor rspirep ^Location: http://(.*)$ Location: https://1 use_backend dsm if { path_beg /dsm } use_backend sabnzbd if { path_beg /sab } use_backend sickbeard if { path_beg /sick } use_backend couchpotatoserver if { path_beg /couch } use_backend maraschino if { path_beg /ma } default_backend couchpotatoserver backend web server web localhost: check backend dsm server dsm localhost:5000 check backend sabnzbd server sabnzbd localhost:8080 check backend sickbeard server sickbeard localhost:8081 check backend couchpotatoserver server couchpotatoserver localhost:5050 check backend maraschino server maraschino localhost:8260 check backend haproxy server haproxy localhost:8280 check Voici mes tests et résultat sachant que mon backend par défaut est CouchPotato: https://mondomain.fr/sab --> http://localhost:8080/sabnzbd avec une page vierge Internet Explorer ne peut pas afficher cette page web https://mondomain.fr/sick --> Page 404 pendant une fraction de seconde --> https://mondomain.fr avec l'interface Couchpotato connecter https://mondomain.fr/couch --> https://mondomain.fr/#couch avec l'interface Couchpotato connecter https://mondomain.fr/mar --> https://mondomain.fr/mar avec Page 404 https://mondomain.fr/dsm --> https://mondomain.fr/dsm avec une page du serveur web du syno : Désolé, la page que vous recherchez est introuvable Je ne comprends pas comment il est possible d'avoir autant de différence avec le même code La seule application qui fonctionne est toujours celle que je définie par défaut. Donc je dois pas être loin de la bonne config. Quelqu'un à une idée ? 0 Citer
Diaoul Posté(e) le 7 décembre 2012 Posté(e) le 7 décembre 2012 (modifié) C'est normal, il faut réécrire le path pour retirer le prefixe du backend. Sinon c'est comme si tu faisais pour sab : http://ip.de.ton.syno:8080/sab la page "/sab" sur sabnzbd n'existe pas. http://cbonte.github.com/haproxy-dconv/configuration-1.5.html#4-reqrep Regarde les exemples, ils réécrivent une requête en enlevant le /static/ et en le remplaçant par /. Tu peux faire pareil dans chacun de tes backends. Modifié le 7 décembre 2012 par Diaoul 0 Citer
Arthrax Posté(e) le 8 décembre 2012 Auteur Posté(e) le 8 décembre 2012 Merci et j'ai découvert les expressions régulière Je viens de rajouter cette option dans le backend pour Sabnzbd : reqrep ^([^ :]*) /sab/(.*) 1 /2 et ça marche très bien Maintenant j'ai un problème avec les applications SickBeard, DSM et CouchPotato, l'option précédente ne fonctionne pas. Après avoir cherché, je pense que c'est dû à l'url interne de ces applis car un répertoire /xxxx/ est ajouté en fin mais non interprété par HAProxy Par exemple si je veux me connecter sur SickBeard --> http://localhost:8081 lorsque la page est affichée, on a http://localhost:8081/home Pour essayer de résoudre, j'ai remplacé l'option par reqrep ^([^ :]*) /sab/(.*) 1 /home/2 mais lorsque la page est affiché, je n'ai pas la mise en forme du texte ni les images comme s'il manquait la page css. Je pense qu'il faut trouver un moyen de rendre la fin du reqrep dynamique mais je n'arrive pas à trouver la bonne syntaxe 0 Citer
Diaoul Posté(e) le 8 décembre 2012 Posté(e) le 8 décembre 2012 Quand tu GET sur /sickbeard/ et que le backend ne le sait pas, il va te renvoyer des liens vers les menus qui ne contiennent pas le préfixe /sickbeard/ donc quand tu vas cliquer dessus ça ne va pas marcher. Le problème c'est que quand tu GET /home parce que tu as un lien qui pointe vers /home dans sickbeard, HAProxy ne sait pas si tu veux vraiment GET /home ou si tu veux GET /sickbeard/home donc pas moyen de réécrire ta requete dans ce sens. Il faudrait réécrire tout le contenu HTTP de ce que te renvoie sickbeard pour que les liens soient au bon format. Cette solution n'est pas envisageable. Il ne te reste plus qu'a aller voir du coté des options web_root de sickbeard pour essayer d'y mettre /sickbeard et virer ta regexp de réécriture. Tu fais juste une redirection et ça devrait aller. 0 Citer
Arthrax Posté(e) le 11 décembre 2012 Auteur Posté(e) le 11 décembre 2012 Bien joué, ça a résolu tout mes problèmes Voilà mes modifications pour les personnes intéressé : Sickbeard : éditer le fichier /volume1/@appstore/sickbeard/var/config.ini et modifier la ligne web_root = /sick CouchPotato : éditer le fichier /volume1/@appstore/couchpotatoserver/var/settings.conf et modifier la ligne url_base = couch Maraschino : lancer l'interface graphique et cliquer en haut à gauche sur Manage --> Server settings et modifier Marachino webroot = /ma DSM : Application par défaut du frontends Merci Diaoul pour ton aide et tes explications. 0 Citer
aurelized Posté(e) le 11 décembre 2012 Posté(e) le 11 décembre 2012 Merci pour ce package et pour toutes ces infos Je voudrais faire exactement la meme chose que toi antrax, mais n y arrive pas. Pourrais tu decrire en details (nb compliant) les differentes etapes pour arriver a te connecter a sickbeard depuis http://www.domain.com/sickbeard Dams les parametres d haproxy tout me parait configure et prtant rien ne se passe Que faut il faire du "check" qui apparait dans le front ends? (j ai tellement envie d utiliser ce package que je poste depuis mon telephone ne pouvant plus poster depuis mon pc...) Merci pour ton aide 0 Citer
Arthrax Posté(e) le 12 décembre 2012 Auteur Posté(e) le 12 décembre 2012 (modifié) Connecte toi sur ton nas en putty Arrete le service SIckBeard Edite le fichier /volume1/@appstore/sickbeard/var/config.ini et modifie la ligne web_root = en web_root = /sickbeard Redemarre le service Sickbeard Creer une route sur ton routeur qui redirige le port de ton frontend HAProxy vers le port à l'extérieur Verifie dans HAProxy que ton backend SickBeard correspond bien au port de ta config. Creer une nouvelle association dans HAProxy avec ton frontend http , ton backend SickBeard et avec la condition if { path_beg /sickbeard } Applique les modification dans HAProxy en cliquent sur Ecriture dans le premier menu Test avec http://www.domain.com/sickbeard Modifié le 17 décembre 2012 par Arthrax 0 Citer
aurelized Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 (modifié) excellent, je check ca des que je peux, merci beaucoup. juste deux dernieres question dans les backends j ai ca name servers options sickbeard sickbeard localhost:port check le port est bon. que signifie ce check? que signifie le 3. ? je forward le port vers 5080 en gros? Modifié le 12 décembre 2012 par aurelized 0 Citer
aurelized Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 je precise pour les nb comme moi que pour editer le fichier il faut se logger en root dans putty,puis taper vi /volume1/@appstore/sickbeard/var/config.ini ensuite i pour pouvoir inserer du texte changer web_root = "" en web_root = /sickbeard taper echap puis :wq puis entrer 0 Citer
Arthrax Posté(e) le 12 décembre 2012 Auteur Posté(e) le 12 décembre 2012 D'après ce que j'ai compris, le check n'est qu'une vérification faite par HAProxy pour voir si l'application répond bien. Pour vois le résultat, il faut aller dans les logs, pour voir les logs il faut installer le Syslog server depuis le centre de packet. Il faut mettre if { path_beg /sickbeard } dans HAProxy (Interace graphique) --> Associations --> Conditions (de ton association Frontend Http avec le Backend Sickbeard) 0 Citer
aurelized Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 7. est un gros fail, je pense que c est du au point 3. si je redirige le port en externe vers le 5080 en interne j ai une erreur 503 0 Citer
Arthrax Posté(e) le 12 décembre 2012 Auteur Posté(e) le 12 décembre 2012 Dans ton Frontend, essaye de mettre Sickbeard par défaut. Ensuite test http://www.domain.com Tu devrais etre redirigé vers Sickbeard par défaut. Si ça ne marche pas, test en interne déjà : http://IP_NAS/sickbeard 0 Citer
aurelized Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 j ai remplace le 5080 par le port de sickbeard dans le frontend mais ca ne change rien j ai essaye mon ip interne avec / sickbeard sans plus de succes ( la page est introuvable) 0 Citer
Arthrax Posté(e) le 12 décembre 2012 Auteur Posté(e) le 12 décembre 2012 Ah vérifie que ta modification dans config.ini a bien été pris en compte. Sinon vérifie avec http://IP_NAS:Port_Interne_Sickbeard/sickbeard 0 Citer
aurelized Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 merci beaucoup pour ton aide la modif a ete prise en compte et ipnas:portsb/sickbeard me redirige bien vers sickbeard jail impression que l asso n a pas ete prise en compte. je restest 0 Citer
aurelized Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 (modifié) ca ne marche pas, et www.sickbeard.domaine.com non plus Modifié le 12 décembre 2012 par aurelized 0 Citer
Arthrax Posté(e) le 12 décembre 2012 Auteur Posté(e) le 12 décembre 2012 Tu as bien validé les infos dans HAProxy en cliquant sur Ecriture ? Sinon poste le contenu de ton fichier haproxy.cfg en cachant tes données perso. 0 Citer
aurelized Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 oui omment je fais pour pouvoir le copier coller? 0 Citer
Arthrax Posté(e) le 12 décembre 2012 Auteur Posté(e) le 12 décembre 2012 Tu ouvre le fichier avec vi puis tu sélectionnes le texte avec ta souris et tu fais un clique gauche (le texte est copié) ensuite tu le colle ici. 0 Citer
aurelized Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 (modifié) daemon maxconn 256 log localhost user info spread-checks 10 defaults mode http stats enable default-server inter 30s fastinter 5s log global option httplog timeout connect 5s timeout client 50s timeout server 50s timeout tunnel 1h listen stats :8280 stats uri / stats show-legends stats refresh 10s stats realm Haproxy Statistics stats auth xxxxxxxxxxxxxxxxxxxxxxx frontend http bind :5080 option http-server-close option forwardfor use_backend sickbeard if { path_beg /sickbeard } default_backend sickbeard frontend https bind :5443 ssl crt /usr/local/haproxy/var/crt/default.pem option http-server-close option forwardfor rspirep ^Location: http://(.*)$ Location: https://1 use_backend dsm if { hdr_beg(Host) -i dsm. } use_backend sabnzbd if { hdr_beg(Host) -i sabnzbd. } use_backend nzbget if { hdr_beg(Host) -i nzbget. } use_backend sickbeard if { hdr_beg(Host) -i sickbeard. } use_backend couchpotatoserver if { hdr_beg(Host) -i couchpotatoserver. } use_backend headphones if { hdr_beg(Host) -i headphones. } use_backend maraschino if { hdr_beg(Host) -i maraschino. } il doit y avoir un forward avec le 8280 sur le routeur qui m a echappe non? Modifié le 12 décembre 2012 par aurelized 0 Citer
Arthrax Posté(e) le 12 décembre 2012 Auteur Posté(e) le 12 décembre 2012 Le 8280 est juste une page web affichant les stats, on en a pas besoin dans notre cas (tu peux la visualiser avec ton IP:828) Sinon la config à l'air bonne. Tu as bien redirigé le port interne 5080 vers le port externe ? Ton nom de domaine pointe bien sur ton ip publique ? Sinon essaye avec http://IP_publique Essaye aussi avec http:IP_Interne_NAS:5080 pour valider que HAProxy fonctionne bien. 0 Citer
aurelized Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 (modifié) en fait sur mon routeur c est linverse, je peux forwarde un port extern vers un interne donc j ai redirige le port vers le 5080 ca va pas? ( j obtiens une erreur 503 avec ipinterne:5080) sinon oui la redirection nom de domain ip publique fonctionne parfaitement Modifié le 12 décembre 2012 par aurelized 0 Citer
Arthrax Posté(e) le 13 décembre 2012 Auteur Posté(e) le 13 décembre 2012 Niveau routage c'est bon. Apparement c'est HAProxy qui pose problème car ip_interne:5080 ne fonctionne pas. Verifie que le service est bien démarré. Et l'erreur 503 que tu as, c'est une page bleu de Synology ou une page basic du navigateur ? 0 Citer
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.