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

Apache Discussion :

URL Rewriting avec Proxy


Sujet :

Apache

  1. #1
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut URL Rewriting avec Proxy
    Bonjour,

    J'ai un serveur apache où tourne une application Zend Framework. j'ai donc des Alias vers mon dossier image, css ou js. J'ai aussi le .htaccess suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ /index.php [NC,L]
    En accès direct tout fonctionne bien avec mon VirtualHost suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <VirtualHost *:80>
            DocumentRoot /var/www/html/2012_gestion_capacites/public/gestion
            ServerName test.un.deux
            ServerAlias test.network.un/test_backup/
            Alias /log /var/www/html/2012_gestion/log
            Alias /css /var/www/html/2012_gestion/public/css
            Alias /js /var/www/html/2012_gestion/public/js
            Alias /img /var/www/html/2012_gestion/public/img
            Alias /lib /var/www/html/2012_gestion/lib
            SetEnv APPLICATION_ENV "development"
     
    <Directory "/var/www/html/2012_gestion/public/gestion">
            Options Indexes FollowSymLinks MultiViews
            Order allow,deny
            Allow from all
            AllowOverride all
    </Directory>
    </VirtualHost>
    Quand je vais à cette adresse : http://test.un.deux/
    Tout fonctionne correctement.

    Là où le bât blesse, c'est que je dois passer par un proxy pour accéder à mon serveur depuis l'extérieur. Et je perd les réécritures d'URL et les Alias de mon virtualHost...

    Je ne sais pas comment faire. Au niveau de mon proxy je fais un Proxypass et un ProxyPassReverse.

    J'ai donc accès à cette URL depuis l'extérieur : http://url-externe.com/mywebsite/

    Cette URL est redirigé par le proxy vers http://test.un.deux/. Et là je n'ai plus d'images rien du tout et la réécriture d'URL ne se fait pas correctement. J'obtiens ceci après la réécriture :
    http://url-externe.com/MODULE/CONTROLLER/VIEW
    Au lieu de ceci :
    http://url-externe.com/mywebsite/MODULE/CONTROLLER/VIEW

    J'ai pensé qu'il fallait mettre mes règles et mes alias sur le proxy mais cela ne fonctionne pas et affecte les autres sites du proxy.

    Je ne sais pas comment faire.

    Vous avez une idée ? C'est possible que mon Apache gérant mon appli puisse détecter qu'une requête vient d'un proxy ?

    D'avance merci de votre aide

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Le problème n'est pas côté Apache mais côté code HTML renvoyé par ton site : il appelle les ressources par des URL relatives à la racine du site (<img src="/..."). Deux contournements possibles : tu modifies ton application pour corriger les URL des ressources et qu'elles soient compatibles avec les différentes URL, ou bien tu utilises le module mod_proxy_html qui permet à Apache de réécrire un peu le code HTML à la volée pour ajouter en dynamique le /mywebsite qui manque.

  3. #3
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Aie aie aie...

    Moi j'écris toujours mes URL de manière relative de façon à ne jamais avoir ce genre de problème... Enfin normalement...

    Je vais regarder du côté de mod_proxy_html mais ZF est quand même perdu avec ce répertoire http://url-externe.com/mywebsite/ il croit que mywebsite est un module. Ce qui n'est pas le cas... Erf...

    Car j'ai essayé de mettre des URLs absolu cela ne marche pas mieux... Cela fait tout buguer et les Alias ne fonctionne pas non plus...

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Avant de tester quoi que ce soit, il faut être sûr que le problème est bien celui que je décris (je peux me tromper...). Pour cela, le premier truc à faire c'est regarder le code HTML reçu par le navigateur pour voir s'il y a bien un problème avec les URL. Ca peut aussi venir d'une balise <base>, d'un code JavaScript, bref de plein de choses.

  5. #5
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Merci de ton aide mac grâce à tes indications j'ai réussi à faire avancé un peu les choses. j'arrive à accéder à mes modules/controller/view

    Mais j'ai toujours un problème d'Alias. En local j'ai des alias de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Alias /css /var/www/project/public/css
    Mais avec le proxy reverse mes alias locaux ne sont pas pris en compte. Une idée, une piste pour m'éclairer ?

    D'avance merci.

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est quoi un alias local ? Tu veux dire que les alias et la conf du reverse proxy sont dans le même serveur Apache ?

  7. #7
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Non non, pardon je dois mal m'exprimer. J'ai ceci comme architecture :

    Client => Firewall => Apache servant de Proxy => Apache hébergeant mon appli

    L'apache servant de proxy fait juste un Proxypass et un ProxyPassReverse.

    Sur mon apache hébergeant mon appli j'ai des Alias comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Alias /css /var/www/project/public/css
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Alias /img /var/www/project/public/img
    Sans passer par le proxy mes alias fonctionnent, mais en passant par le proxy mes Alias ne fonctionnent plus...

    Saurais-tu d'où cela peut venir ? ou comment configurer le proxy ?

  8. #8
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Ben je vais reposer la question du code HTML : le premier truc à faire c'est regarder le code HTML reçu par le navigateur. Est-ce que tu peux en donner un fragment contenant un appel vers un alias.

  9. #9
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    OKi,

    Voici mon Alias img sur le serveur qui héberge mon appli :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Alias /img /var/www/project/public/img
    Quand j'accède en local cela fonctionne et j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="http://enlocal.com/img/test.png">
    Quand j'accède depuis mon proxy j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://depuisproxy.com/appli_proxy/img/test.png">
    Au niveau du proxy j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ProxyPass /appli_proxy/ http://enlocal.com/
    ProxyPassReverse /appli_proxy/ http://enlocal.com/
    J'avoue ne pas comprendre... C'est quand même complexe.

  10. #10
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Le code HTML me semble correct, je ne vois pas pourquoi ça ne fonctionne pas. Tu peux donner le contenu des fichiers access_log et error_log du serveur qui héberge l'application lorsque tu demandes l'image /img/test.png depuis le site localement et depuis le proxy ?

  11. #11
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Ouep je te les donnerai demain matin. Car c'est au boulot. Si cela ne te dérange pas d'attendre un petit peu

    EDIT :

    Il n'y a aucune erreur ni aucune ligne qui sort des logs sur mon Apache où est l'application.

    Sur le proxy :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ***.1.82.*** - - [17/Apr/2012:08:22:23 +0200] "GET /img/shared/nav/nav_logout.gif HTTP/1.1" 404 308 "http://depuisproxy.com/appli_proxy/" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19"
    ***.1.82.*** - - [17/Apr/2012:08:22:23 +0200] "GET /img/shared/side_shadowleft.jpg HTTP/1.1" 404 309 "http://depuisproxy.com/appli_proxy/" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19"
    ***.1.82.*** - - [17/Apr/2012:08:22:23 +0200] "GET /img/shared/side_shadowright.jpg HTTP/1.1" 404 310 "http://depuisproxy.com/appli_proxy/" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19"
    ***.1.82.*** - - [17/Apr/2012:08:22:23 +0200] "GET /log/statsAppli.png HTTP/1.1" 404 297 "http://depuisproxy.com/appli_proxy/" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19"
    [Tue Apr 17 08:22:23 2012] [error] [client 10.1.82.47] File does not exist: /var/www/html/img, referer: http://depuisproxy.com/appli_proxy/
    [Tue Apr 17 08:22:23 2012] [error] [client 10.1.82.47] File does not exist: /var/www/html/img, referer: http://depuisproxy.com/appli_proxy/
    [Tue Apr 17 08:22:23 2012] [error] [client 10.1.82.47] File does not exist: /var/www/html/img, referer: http://depuisproxy.com/appli_proxy/
    [Tue Apr 17 08:22:23 2012] [error] [client 10.1.82.47] File does not exist: /var/www/html/log, referer: http://depuisproxy.com/appli_proxy/
    Avec des liens comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://depuisproxy.com/img/test.png">
    Il ne trouve pas du tout l'image ni la page.

    Alors que comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://depuisproxy.com/appli_proxy/img/test.png">
    Zend me renvoie dans mon ErrorController et me renvoi sur error.phtml. Mais c'est étrange car dans error.phtml il est censé m'afficher le module, le controller et ma vue mais on dirait qu'il est pas vraiment entré dans le processus d'erreur car il me fait une fatal error PHP sur ma variable exception qui existe quand il y a une réelle erreur dans mon projet zend.

    Donc je crois que ce n'est pas la faute d'apache finalement mais je ne sais pas ce qui cloche dans mon projet Zend...

    EDIT 2 :
    je crois que le problème vient du htaccess... Est-ce qu'il est possible de dire que /img, /js et /css ne doivent pas être redirigé vers index.php ?

    Mon .htaccess actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ /index.php [NC,L]
    Je crois que si on arrive à annuler la redirection de img, js et css cela devrait fonctionner.

  12. #12
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Il faut ajouter une condition par cas à ne pas rediriger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{REQUEST_URI} /img
    RewriteCond %{REQUEST_URI} /css
    RewriteCond %{REQUEST_URI} /js
    Sinon, on est bien d'accord pour dire que le code HTML reçu par le navigateur n'est pas le bon ?

Discussions similaires

  1. [URL Rewriting] avec titres textuels
    Par dl_jarod dans le forum Apache
    Réponses: 13
    Dernier message: 23/01/2008, 14h13
  2. url rewriting avec tomcat en standalone
    Par julien20vt dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 18/01/2008, 13h59
  3. URL Rewriting avec lettres
    Par Alexandrebox dans le forum Apache
    Réponses: 7
    Dernier message: 22/11/2007, 13h22
  4. Si vous avez des questions sur Apache, HTAccess, URL rewriting avec Apache, etc
    Par Marc Lussac dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 28/08/2007, 19h09
  5. [URLRewriting] URL Rewrite avec Language
    Par Prosis dans le forum Apache
    Réponses: 15
    Dernier message: 28/02/2007, 19h28

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