IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Application ASP.NET MVC3 derrière un Reverse Proxy Apache


Sujet :

ASP.NET MVC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Application ASP.NET MVC3 derrière un Reverse Proxy Apache
    Bonjour,

    J'ai développé une application ASP.NET MVC3, disponible sur 2 points d'entrée.

    Par un accès direct pour les utilisateurs LAN. (ex: http://192.168.1.1/)

    Par une adresse externe pour les utilisateurs WAN. (ex: http://myserver.mycompany.com/myapplication/)

    Pour les utilisateurs WAN, mon point d'entrée est un serveur Web Apache, qui me sert de reverse proxy pour atteindre mon serveur IIS.

    Ci-dessous ma configuration Apache:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <VirtualHost *:80>
        ServerName myserver.mycompany.com
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyPass /myapplication/ <a href="http://192.168.1.1:8087/" target="_blank">http://192.168.1.1:8087/</a>
        ProxyPassReverse /myapplication/ <a href="http://192.168.1.1:8087/" target="_blank">http://192.168.1.1:8087/</a>
    </VirtualHost>
    Lorsque j'utilise un <%: Url.Content ("~/css/style.css")%> par exemple, derrière le reverse proxy, l'URL générée est la suivante:
    http://myserver.mycompany.com/css/style.css

    L'URL correcte devrait être:
    http://myserver.mycompany.com/myappl.../css/style.css

    Même problème avec l'URL générées par Url.Action, Html.BeginForm, etc ..

    Comment régler le problème?

    J'ai lu la solution du mod_proxy_html, mais celle-ci ne fonctionne que partiellement.

    J'ai également remarqué que quand je faisait un <%= Request.RawUrl %>, celui-ci me retournait derrière le reverse proxy "/" et non "/myapplication/". Je crois que l'adresse générée par cette instruction est également celle qui sert pour la génération des liens sur le moteur asp.net.

    Il y a-t-il des entetes particulières à envoyer afin que le moteur asp.net comprenne qu'il faut se baser sur le repertoire "/myapplication/" pour racine et non "/" ?

    Merci d'avance.

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    J'ai exactement le même problème !

    Quelqu'un aurais t il une solution à apporter ?

  3. #3
    CUCARACHA
    Invité(e)
    Par défaut
    Salut,

    En fait, je dirais que c'est le serveur apache qui a raison...

    Le problème vient du fait que le site web est une application du site web par défaut et non un application web indépendante.

    Donc la bonne pratique serait de créer un site web racine au même niveau que le site web par défaut pour que la redirection pointe directement sur l'application.

    Tu vas dans la gestion des utilisateurs (locale si tu n'as pas de domaine, et celle du domaine si tu en as un)
    Tu crée un utilisateur AP_MonApplication
    Tu vas dans IIS
    Tu cliques bt droit sur ton serveur
    Nouveau/Site web racine
    Tu indiques un répertoire (je te conseille de le mettre à côté de wwwroot) : c:\inetpub\myapplication
    Tu crée le site web
    Tu vas dans les pool d'application
    Tu choisis le pool d'application qui a été créé avec le nom de ton site
    Tu cliques sur les paramètres avancés
    Version du .net Framework, tu choisis le .net 4.0 (si tu ne le trouves pas, il faut l'installer avec aspnet_regiis du .net 4.0)
    Mode de Pipline géré, tu choisis le mode intégré
    Tu cliques sur la personnalisation du compte d'identité du pool d'application
    Tu indiques l'utilisateur que tu as créé plus haut :
    Pour la machine locale MaMachine\AP_MonApplication
    Pour le domaine MonDomaine\AP_MonApplication
    (Il faut indiquer le mot de passe)
    Tu ouvre l'explorateur windows
    Tu vas sur le dossier parent du répertoire de ton site
    Tu cliques droit, sécurité, tu ajoutes l'utilisateur créé plus haut avec les droits de lecture.
    Si tu utilises un serveur SQL, tu crée une connexion pour le compte utilisateur créé plus haut
    Tu ajoute la base de données de ton application au mappage de l'utilisateur avec les droits datareader et datawriter
    Enfin, tu copies le contenu de l'ancien répertoire qui doit être dans c:\inetpub\wwwroot\myapplication dans le répertoire c:\inetpub\myapplication
    Tu retournes dans IIS, Tu vas sur le site web par défaut, modifier les liaisons, tu remplaces le port 80 par le port 8080.
    Tu retournes dans ton site, modifier les liaisons, tu mets le port 80.

    Tu modifie la config apache comme suit :

    <VirtualHost *:80>
    ServerName myserver.mycompany.com
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass /myapplication/ <a href="http://192.168.1.1/" target="_blank">http://192.168.1.1/</a>
    ProxyPassReverse /myapplication/ <a href="http://192.168.1.1/" target="_blank">http://192.168.1.1/</a>
    </VirtualHost>

    Tu me dis si ça a fonctionné...

    ++

    Laurent

Discussions similaires

  1. [Delphi.net]Structuration d'une application asp.net
    Par skywaukers dans le forum Delphi .NET
    Réponses: 7
    Dernier message: 28/12/2006, 11h50
  2. Réponses: 3
    Dernier message: 07/07/2006, 16h47
  3. Réponses: 8
    Dernier message: 18/08/2005, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo