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 :

Boucle de redirection même avec X-Forwarded-Proto


Sujet :

Apache

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Boucle de redirection même avec X-Forwarded-Proto
    Bonjour,

    Nous somme en train de configurer un serveur (avec un load balancer et cache)
    Pound -> Varnish -> Apache -> CentOS.

    Nous utilisons X-Forwarded-Proto pour transmettre l'information que nous somme
    en https ou niveau en dessous de Pound.

    Cela marche bien quand on accède directement une page comme https://example.com. Par contre, quand on accède une page comme http://example.com et que nous faisons une redirection vers https via PHP ou htaccess cela ne fonctionne pas. Nous avons alors une boucle de redirections.

    Nous avons une solution qui fonctionne lorsque nous faisons la redirection en Javascript mais nous préférerions avoir une solution coté serveur.

    Voici à quoi ressemble nos config:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    ///////////////
    // htaccess
    ////////////////////
      RewriteCond %{HTTP:X-Forwarded-Proto} !https
      RewriteRule (.*) https://example.com [L,R]
     
     
    ///////////////////
    // php 
    //////////////////
    if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'){
    	$_SERVER['HTTPS']='on';	
    }
     
    if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on'){
    	header('Location: '. 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
    }
     
    //////////////
    //  pound config
    //////////
    User "pound"
    Group "pound"
    Control "/path/to/pound.cfg"
     
     
    ListenHTTP
        Address 0.0.0.0
        Port 80
          HeadRemove "X-Forwarded-Proto"
          HeadRemove "X-Forwarded-For"
          AddHeader "X-Forwarded-Proto: http"
          RewriteLocation 2
    End
     
    ListenHTTPS
        Address 0.0.0.0
        Port    443
        Cert    "/path/to/pound.pem"
          HeadRemove "X-Forwarded-Proto"
          HeadRemove "X-Forwarded-For"
          AddHeader "X-Forwarded-Proto: https"
    End
     
    Service
        BackEnd
                Address 0.0.0.0
            Port    80
        End
     
    End


    Dans PHP, si je place

    header("Location: https://example.com")

    dans la réponse je vois:

    HTTP/1.1 302 Found
    Server: Apache
    X-Powered-By: PHP/5.3 ZendServer/5.0
    Location: http://example.com
    Content-Type: text/html; charset=UTF-8
    Content-Length: 0
    Accept-Ranges: bytes
    Date: Wed, 23 Jan 2013 04:58:22 GMT
    X-Varnish: 1294094576
    Age: 0
    Via: 1.1 varnish
    Connection: keep-alive

    Donc le https est remplacer par http

    J'ai cherché et posté sur plusieurs forums mais personne n'a encore trouver de solution.

    Merci.

  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
    A priori, il y a un serveur (Apache, Varnish ou Pound) qui remplace le Location: https://... par Location: http://... Une solution un peu bourrin que je vois mais qui permettra de voir qui est en cause est de faire des captures de flux (avec tcpdump par exemple) sur les différents serveurs pour identifier qui fait la réécriture https -> http.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut analyse des paquets
    Nous avons installé Wireshark et avons observé que la redirection se perd rendue pratiquement au moment d'être livrée par le serveur.

    Quelques infos supplémentaires sur la config:
    Tout d'abord une IP virtuel. 100.100.100.89
    2nd. Pound sur VM IP: 100.100.100.81
    3rd. Varnish sur VM IP: 100.100.100.83
    4th. Apache sur VM IP: 100.100.100.87

    Étapes qui marchent biens
    100.100.100.89 : virtual ip reçoit la requête
    100.100.100.81 : pound reçoit la requête
    100.100.100.83 : varnish reçoit la requête
    100.100.100.87 :apache reçoit la requête et effectue la redirection
    100.100.100.83: varnish transmet la redirection
    100.100.100.81: pound transmet la redirection

    Où le problème apparaît
    1. appel au serveur DNS par 100.100.100.89
    2. la réponse est envoyés au client par (100.100.100.89) mais le "s" de https à disparru ( Location: http://example.com )

Discussions similaires

  1. pourquoi linux fonctionne même avec un programme qui fait une boucle while(1) ?
    Par morpheusmg dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 23/12/2011, 17h49
  2. Boucle de redirection ? soucis avec sfGuard ?
    Par nims dans le forum Plugins
    Réponses: 7
    Dernier message: 18/07/2010, 22h07
  3. Redirection de port routeur (forward)
    Par Fabouney dans le forum Hardware
    Réponses: 6
    Dernier message: 29/09/2005, 08h29
  4. L'installation d'XP boucle sur elle-même
    Par pf106 dans le forum Windows XP
    Réponses: 13
    Dernier message: 20/08/2005, 14h55
  5. Ssh avec X11 forwarding
    Par troumad dans le forum Réseau
    Réponses: 13
    Dernier message: 08/07/2005, 12h49

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