heavydev Posté(e) le 22 avril 2015 Partager Posté(e) le 22 avril 2015 (modifié) Hébergement mutualisé. Pour des raisons de sécurité j'ai décidé de permettre aux utilisateurs de créer leur site web à partir du dossier www dans home. Le principe ressemble à celui d'un hebergement mutualisé, je vous l'accorde. Seulement impossible de mettre la main sur la redirection des domaines vers l'espace perso des utilisateurs. Exemple: Contenu du dossier www de l'utilisateur user: index.php -------------------------------------------- <!DOCTYPE html> <head> <meta charset="utf-8"> <title>Essai</title> </head> <body> Ma page d'accueil </body> Je tape sur ma barre URL: http://domaine-du-nas.fr/~user Résultat: Ma page d'accueilBon jusque la tout va bien. Mais imaginons que cet utilisateur est un nom de domaine chez OVH http://domaine-user.fr et qu'il ait envie de pouvoir accéder à http://domaine-du-nas.fr/~user via son propre domaine. Comme je dois faire pour lui permettre ça ? Exemple: Appel de la page http://domaine-user.fr : Résultat: Ma page d'accueilMerci pour votre aide ! Modifié le 24 avril 2015 par heavydev 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 6 mai 2015 Partager Posté(e) le 6 mai 2015 Hello ! Je relève car j'ai exactement la même question ! Je rajoute pour ma part que j'utilise HAproxy... Merci de votre aide ! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 8 mai 2015 Partager Posté(e) le 8 mai 2015 (modifié) Hello ! Je relève car ce besoin est fort de mon côté. Moi, je cherche à faire un site web pour mon association. Cette-dernière a un nom de domaine et je souhaite évidemment qu'il apparaisse sans mon domine perso. Chez OVH, j'ai créé le champ A avec une redirection vers l'IP du NAS. Du coup http://domaine2.compointe vers le NAS comme http://domaine1.net . C'est cool, mais je suis bloqué à cette étape. Puis-je utiliser HAproxy pour remédier à cela ? Ah et : http://domaine-du-nas.fr/~user ... ne fonctionne pas pour moi... Merci pour votre aide !! Modifié le 8 mai 2015 par Hayholten 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 12 mai 2015 Partager Posté(e) le 12 mai 2015 P'tit up ;-) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 12 mai 2015 Partager Posté(e) le 12 mai 2015 Ah et j'oubliais... Je suis tombé sur cet article : http://blog.gauss-it.net/2013/06/synology-hebergement-mutualise/ . Toutefois, de mon côté ça marche pas... Je dois dire que s'il était possible d'éviter l'url rewriting ce serait top. Dans l'attente de votre aide ;-) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 17 mai 2015 Partager Posté(e) le 17 mai 2015 @ heavydev : Tu arrives à quelque chose toi ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 20 mai 2015 Partager Posté(e) le 20 mai 2015 Up again ! Vraiment personne pour m'aider ? Un tel sujet devrait tout de même en intéresser plus d'un nan ? Help ! ;-p 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 20 mai 2015 Partager Posté(e) le 20 mai 2015 je ne vais pas pouvoir répondre en détail (fatigué), mais une solution à votre problème est d'utiliser un reverse proxy (nginx/haproxy/varnish/squid/apache/... ). Il y a de nombreux posts sur ce sujet dans le forum. On peut faire autrement, mais c'est souvent le plus simple. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 21 mai 2015 Partager Posté(e) le 21 mai 2015 je ne vais pas pouvoir répondre en détail (fatigué), mais une solution à votre problème est d'utiliser un reverse proxy (nginx/haproxy/varnish/squid/apache/... ). Il y a de nombreux posts sur ce sujet dans le forum. On peut faire autrement, mais c'est souvent le plus simple. Hello Fenrir ! Merci pour ton retour ;-) En effet, je tente d'utiliser HAProxy que je pratique d'ores et déjà mais là les arguments me paraissent complexes. Je patauge pas mal d'où ma demande... J'ai essayé plusieurs choses côté "Frontends" et "Backends" mais sans succès pour l'heure... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 22 mai 2015 Partager Posté(e) le 22 mai 2015 j'ai fait un petit test vite fait avec le paquet haproxy du syno : Pour le test j'ai créé 3 dossiers (user1, user2 et user3) dans le partage web, mais ça devrait fonctionner de la même manière avec les ~login http://<any>/site1/ => http://localhost:80/user1/ http://<any>/site2/ => http://localhost:80/user2/ http://<domain>/user3/ => http://localhost:80/user3/ La conf suivante devrait de donner les bases : frontend test bind :5081 option http-server-close option forwardfor acl url_tag1 path_beg /site1 acl url_tag2 path_beg /site2 use_backend site1 { if url_tag1 } use_backend site2 { if url_tag2 } use_backend site3 { if hdr(Host) -i tondomain.org } default_backend web backend site1 reqirep ^([^\ :]*)\ /site1/(.*) \1\ /user1/\2 server site1 localhost:80 check backend site2 reqirep ^([^\ :]*)\ /site2/(.*) \1\ /user2/\2 server site2 localhost:80 check backend site3 server site3 localhost:80 check (la regexp est à affiner, elle ne match pas les url sans le / de fin) Après tu peux combiner mes exemples. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 23 mai 2015 Partager Posté(e) le 23 mai 2015 (modifié) j'ai fait un petit test vite fait avec le paquet haproxy du syno : Pour le test j'ai créé 3 dossiers (user1, user2 et user3) dans le partage web, mais ça devrait fonctionner de la même manière avec les ~login http://<any>/site1/ => http://localhost:80/user1/ http://<any>/site2/ => http://localhost:80/user2/ http://<domain>/user3/ => http://localhost:80/user3/ La conf suivante devrait de donner les bases : frontend test bind :5081 option http-server-close option forwardfor acl url_tag1 path_beg /site1 acl url_tag2 path_beg /site2 use_backend site1 { if url_tag1 } use_backend site2 { if url_tag2 } use_backend site3 { if hdr(Host) -i tondomain.org } default_backend web backend site1 reqirep ^([^\ :]*)\ /site1/(.*) \1\ /user1/\2 server site1 localhost:80 check backend site2 reqirep ^([^\ :]*)\ /site2/(.*) \1\ /user2/\2 server site2 localhost:80 check backend site3 server site3 localhost:80 check (la regexp est à affiner, elle ne match pas les url sans le / de fin) Après tu peux combiner mes exemples. Re ! Milles mercis pour ces infos. Je me suis lancé dedans même si je galère pas mal pour l'heure. Dans ton exemple, tu es délibérément passé au port 5081 ? Je suis en effet dans le cas ~login. J’essaye d'arriver à ça : www.domaineduuser.com . Je reviendrai si je peine trop (c'est quelque peu Rock'N'Roll quand même ;-) ). Modifié le 23 mai 2015 par Hayholten 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 23 mai 2015 Partager Posté(e) le 23 mai 2015 Je me suis lancé dedans même si je galère pas mal pour l'heure. Dans ton exemple, tu es délibérément passé au port 5081 ? Oui, j'ai choisi un port non utilisé pour partir d'un "profil" vierge Je suis en effet dans le cas ~login. J’essaye d'arriver à ça : www.domaineduuser.com . Ajoute une expression régulière dans site3 pour rediriger la racine (/) vers /~login 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 23 mai 2015 Partager Posté(e) le 23 mai 2015 (modifié) Re ! Merci pour tous ces conseils mais ça ne matche toujours pas... V'là où j'en suis : Frontends Nom : http Binds : :5080 Backend par défaut : dsm Options : option http-server-close,option forwardfor,use_backend user { if hdr(Host) -i domaineduuser.com } Backends Nom : user Serveurs : www localhost:80/~user check Options : Néant Associations Frontend : http Backend : user Conditions : if { hdr_beg(Host) -i www. } On parle bien du dossier "www" dans le "home" du user (celui créé par DSM quand on active l'option site web personnel) ? Il y a clairement une logique qui m'échappe... Modifié le 23 mai 2015 par Hayholten 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 24 mai 2015 Partager Posté(e) le 24 mai 2015 Il faut que tu modifie l'url envoyé par haproxy à apache : Frontend Name: test Binds: :5081 Default Backend: web Options: option http-server-close,option forwardfor Backend Name: fenrir Servers: fenrir localhost:80 check Options: reqrep ^([^\ :]*)\ /(.*) \1\ /~fenrir/\2 Associations Frontend: test Backend: fenrir Condition: if { hdr_beg(Host) -i toto. } http://toto.mondomaine.org:5081/ affiche la même chose que http://monnas/~fenrir/ http://toto.mondomaine.org:5081/test/ affiche la même chose que http://monnas/~fenrir/test/ Je ne connais pas haproxy (habituellement je fais ce genre de chose avec nginx, varnish ou du F5), il y a surement d'autres choses à faire, par exemple http://toto.mondomaine.org:5081/test (sans / de fin) qui ne fonctionne pas (c'est la faute d'apache), ça devrait être faisable d'après la doc : Example: send redirects for request for articles without a '/'. acl missing_slash path_reg ^/article/[^/]*$ redirect code 301 prefix / drop-query append-slash if missing_slash Je te recommande de vérifier le fichier de configuration généré par l'interface ps | grep haproxy => /usr/local/haproxy/var/haproxy.cfg 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 24 mai 2015 Partager Posté(e) le 24 mai 2015 (modifié) Re ! Bon, je sens que j'approche au but mais ce n'est pas encore ça. Je ne comprends pas: 1. comment faire du dossier "www" la cible de mon intention ? 2. comment HAProxy comprends le domaine de l'user ? Mon /usr/local/haproxy/var/haproxy.cfg : lobal 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 ******:********* frontend http bind :5080 option http-server-close option forwardfor use_backend dsm if { hdr_beg(Host) -i dsm. } use_backend gateone if { hdr_beg(Host) -i gateone. } use_backend webdav if { hdr_beg(Host) -i webdav. } use_backend audio if { hdr_beg(Host) -i audio. } use_backend download if { hdr_beg(Host) -i download. } use_backend video if { hdr_beg(Host) -i video. } use_backend file if { hdr_beg(Host) -i file. } use_backend haproxy if { hdr_beg(Host) -i haproxy. } use_backend photo if { path_beg /photo } use_backend prod if { hdr_beg(Host) -i prod. } use_backend www if { hdr_beg(Host) -i www. } use_backend phpMyAdmin if { hdr_beg(Host) -i pma. } use_backend mail if { path_beg /mail } use_backend blog if { path_beg /blog } use_backend webalizer if { path_beg /webalizer } use_backend tp if { hdr_beg(Host) -i tp. } use_backend baikal if { hdr_beg(Host) -i baikal. } use_backend freebox if { hdr_beg(Host) -i freebox. } use_backend sickbeard if { hdr_beg(Host) -i sickbeard. } use_backend sabnzbd if { hdr_beg(Host) -i sabnzbd. } use_backend couchpotato if { hdr_beg(Host) -i couch. } use_backend transmission if { hdr_beg(Host) -i transmission. } use_backend headphones if { hdr_beg(Host) -i headphones. } use_backend user if { hdr_beg(Host) -i user. } default_backend dsm 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 gateone if { hdr_beg(Host) -i gateone. } use_backend webdav if { hdr_beg(Host) -i webdav. } use_backend audio if { hdr_beg(Host) -i audio. } use_backend download if { hdr_beg(Host) -i download. } use_backend video if { hdr_beg(Host) -i video. } use_backend file if { hdr_beg(Host) -i file. } use_backend haproxy if { hdr_beg(Host) -i haproxy. } use_backend photo if { path_beg /photo } use_backend phpMyAdmin if { hdr_beg(Host) -i pma. } use_backend mail if { path_beg /mail } use_backend blog if { path_beg /blog } use_backend webalizer if { path_beg /webalizer } use_backend baikal if { hdr_beg(Host) -i baikal. } use_backend sickbeard if { hdr_beg(Host) -i sickbeard. } use_backend sabnzbd if { hdr_beg(Host) -i sabnzbd. } use_backend couchpotato if { hdr_beg(Host) -i couch. } use_backend transmission if { hdr_beg(Host) -i transmission. } use_backend headphones if { hdr_beg(Host) -i headphones. } default_backend dsm backend web server web localhost:80 check backend dsm server dsm localhost:5000 check backend gateone server gateone localhost:8271 ssl verify none check backend webdav server webdav localhost:5005 check backend audio server audio localhost:8800 check backend download server download localhost:8000 check backend video server video localhost:9007 check backend file server file localhost:7000 check backend haproxy server haproxy localhost:8280 check backend photo server photo localhost:80 backend prod server prod localhost:80 backend www server www localhost:80 backend phpMyAdmin server phpMyAdmin localhost:80 backend mail server mail localhost:80 backend blog server blog localhost:80 backend webalizer server webalizer localhost:80 backend tp server tp localhost:80 backend baikal server baikal localhost:80 backend freebox server freebox 192.168.0.254:80 backend sickbeard server sickbeard localhost:8083 check backend sabnzbd server sabnzbd localhost:8080 check backend couchpotato server couchpotato localhost:5053 backend transmission server transmission localhost:9091 check backend headphones server headphones localhost:8182 backend siteduuser reqrep ^([^\ :]*)\ /(.*) \1\ /~user/\2 server user localhost:80 check Et pour ma part, ce n'est pas http://monnas/~user/ qui fonctionne mais http://www.monnas/~user ?? Et j'ajoute que si j'utilise HAProxy c'est pour son interface simplifiée. Le monde des proxy est quand même nébuleux ;-) Modifié le 24 mai 2015 par Hayholten 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 24 mai 2015 Partager Posté(e) le 24 mai 2015 http://tonnas/~tonlogin correspond au dossier \\tonnas\tonlogin\www de ton nas pour Apache, le serveur web qui écoute sur le port http (80) de ton nas, c'est automatique dans le frontend, "use_backend nom_du_backend if { hdr_beg(Host) -i user. }" indique d'utiliser le backend [nom_du_backend] si le nom de domaine commence par user. (avec le . ) Donc http://user.truc:5081/, http://user.www.truc.com:5081/ et http://user.truc.com:5081/ seront pris en compte. Dans ta conf, tu n'as aucun backend nommé user (nom_du_backend dans mon exemple). De plus, le port est important, haproxy n'écoute pas sur le port http (80) mais sur le port 5080, en local tu dois donc faire tes tests en précisant le port. Tu pourras le masquer après en faisant de la redirection de port. Enfin, je te recommande de créer ton propre frontend pour ne pas avoir d'interactions avec la conf par défaut (dit autrement, utilise exactement mon exemple, il fonctionne). Frontend Name: nom_du_frontend Binds: :5081 Options: option http-server-close,option forwardfor Backend Name: nom_du_backend Servers: nom_du_site localhost:80 check Options: reqrep ^([^\ :]*)\ /(.*) \1\ /~fenrir/\2 Associations Frontend: nom_du_frontend Backend: nom_du_backend Condition: if { hdr_beg(Host) -i toto. } nom_du_frontend, nom_du_backend et nom_du_site sont simplement des noms d'objets dans la configuration Tous les proxy (inverse ou non) fonctionnent de la même manière : ils écoutent sur un port (5081 dans mon exemple) ils lisent les demandes des clients : par exemple une demande de page web http://fenrir.mon.domain:5081/dossier/test.php ils appliquent éventuellement des règles de transformation : ajout de l'entête "HTTP_X_FORWARDED_FOR" par exemple, réécriture de "/" en "/~fenrir/", ... ils test des conditions pour choisir le backend à utiliser : si le nom de domaine commence par user alors va là, sinon va ici ils envoient la requête transformée au(x) backend : donne moi http://localhost/~fenrir/dossier/test.php ils modifient éventuellement la réponse ils enregistre éventuellement le résultat en cache ils envoient la réponse modifiée au client 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 24 mai 2015 Partager Posté(e) le 24 mai 2015 (modifié) Toutes ces informations sont une mine d'or, merci Fenrir ;-) Ce qui me perturbe, c'est que dans mon cas user et domaineduuser sont presque les mêmes. Par exemple : user = super domaine = supertruc.com J'ai suivi ton conseil de passer le frontend en 5081 et je l'ai d'ailleurs appelé super. Dans ton exemple "toto" c'est le nom de l'utilisateur ou celui du dossier dans lequel se trouve le site de utilisateur (\homes\super\www) ? Je continue mes tests ! Modifié le 24 mai 2015 par Hayholten 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 24 mai 2015 Partager Posté(e) le 24 mai 2015 J'ai suivi scrupuleusement tes indications et je crois que ma config' est bonne mais toujours sans succès... Ici le user c'est super et le domaine du user c'est supertruc.com . Frontend Name: super Binds: :5081 Options: option http-server-close,option forwardfor Backend Name: super Servers: super localhost:80 check Options: reqrep ^([^\ :]*)\ /(.*) \1\ /~super/\2 Associations Frontend: super Backend: super Condition: if { hdr_beg(Host) -i supertruc.com. } Et www.supertruc.com:5081/ ne veut toujours pas... Il n'y a pas de différence entre le "www" de utilisateur principal (moi) et le "www" de l'utilisateur secondaire ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 24 mai 2015 Partager Posté(e) le 24 mai 2015 if { hdr_beg(Host) -i supertruc.com. } <=> si le nom de machine commence par supertruc.com donc www.supertruc.com ne correspond pas à tout hasard, tu as bien modifié ton dns (ou le fichier hosts de ton poste) pour que supertruc.com et/ou www.supertruc.com pointe(nt) sur ton nas ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 24 mai 2015 Partager Posté(e) le 24 mai 2015 Re ! Qu'appelles-tu le "nom de machine" ? Chez OVH, j'ai pointé supertruc.com vers l'IP publique du NAS et j'ai fait un CNAME www vers supertruc.com... J'ai mal fait ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 24 mai 2015 Partager Posté(e) le 24 mai 2015 pour les utilisateurs situés en dehors de ton réseau, ça devrait être bon, mais pas pour ceux situés dans ton réseau (sauf si ta box fait du loopback) Pour faire simple : modifie le fichier hosts de ton ordi (/etc/hosts ou c:\windows\system32\drivers\etc\hosts) en ajoutant ces 2 lignes : ip.privée.du.nas supertruc.com ip.privée.du.nas www.supertruc.com 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 24 mai 2015 Partager Posté(e) le 24 mai 2015 C'est surprenant car surpertruc.com me fait bien tomber même en local sur le DSM. Je teste et reviens ;-) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 24 mai 2015 Partager Posté(e) le 24 mai 2015 (modifié) Bon, il semble que les choses commencent à être OK. J'ai dû mettre super en backend par défaut et maintenant que ce soit www.supertruc.com:5081 ou supertruc.com:5081 je tombe sur le site de l’utilisateur (ce qui est en soit une avancée malgré le fait qu'il perde l'accès simplifié au DSM). J'y suis presque ;-) Côté redirection de port, j'ai un peu de mal à piger, j'ai déjà redirigé le "80" vers le "5080". Il faudrait que je route le "5081" vers le "5080" ? Modifié le 24 mai 2015 par Hayholten 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 24 mai 2015 Partager Posté(e) le 24 mai 2015 si ça marche depuis ton lan sans toucher à ton fichier hosts, c'est probablement que ton routeur gère le loopback pour la redirection, oui ou non, ça dépend des services que tu veux rendre accessible sur le port "80". j'ai utilisé le port 5081 pour être certain de ne pas avoir d'interaction avec la conf par défaut et donc pouvoir tester tranquillement. si tu souhaite utiliser les redirections de la conf par défaut, 2 solutions : tu ajoute les règles dont tu as besoin dans la conf en 5081 et tu forward le port "80 vers le port 5081 (donc rien vers 5080) ou tu ajoute tes règles à la conf par défaut et tu forward le port "80 vers le port 5080 (donc rien vers 5081) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 24 mai 2015 Partager Posté(e) le 24 mai 2015 Re ! Côté routeur je suis sous une Freebox V6 ;-) Vu que toute ma config' fonctionne actuellement sur le port "5080", je préfère continuer à utiliser celui-là. Seulement, le fait de repasser au 5080 change mon backend par défaut de "super" à "dsm" (backend que j'ai configuré pour moi pour le coup). Et je n'accède plus à "www.supertruc.com" ni même au DSM via "supertruc.com". Par contre supertruc.com:5080 fonctionne et m'amène au DSM... (Je précise que j'ai bien une redirection du pour "80" vers le "5080" sur le routeur) C'est cornélien cette affaire... Je continue mes tests pour trouver la solution idéale... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
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.