Tard mais quand même, je viens de traiter le même problème, et cela a fonctionné pour moi:
RequestHeader set X_FORWARDED_PROTO 'https' env=HTTPS
La documentation dit:
Lorsque la directive RequestHeader est utilisée avec l'argument add, append ou set, un quatrième argument peut être utilisé pour spécifier les conditions dans lesquelles l'action sera effectuée. Si la variable d'environnement spécifiée dans l'argument env = ... existe (ou si la variable d'environnement n'existe pas et env =! ... est spécifiée), l'action spécifiée par la directive RequestHeader prendra effet. Sinon, la directive n'aura aucun effet sur la demande.
Alors que la variable d'environnement HTTPS n'est définie que lorsque la demande est effectuée via SSL.
Vous ne voulez pas ça; il définirait votre en-tête sur "HTTP / 1.1" (même sur une demande https) - probablement pas terriblement utile à tout ce que vous passez.
Vous avez différents blocs VirtualHost pour http et https; il suffit de coder en dur le
RequestHeader
paramètre dans chacun.la source
Vous pouvez résoudre ce problème en utilisant le
early
mot clé:Sinon, vous pouvez faire ce que John Crenshaw a suggéré, c'est-à-dire utiliser
RewriteRule
au lieu deProxyPass
directives.la source
J'ai trouvé la cause. Il s'avère que c'est un problème d'ordre des opérations. mod_rewrite est responsable de la fourniture de ces variables d'environnement, mais Apache ne les traite qu'après avoir traité les demandes ProxyPass. Jusque-là, il va simplement mettre null. La seule solution de contournement semble être de faire le proxy via mod_rewrite.
Voir http://www.gossamer-threads.com/lists/apache/users/267160?do=post_view_threaded#267160
la source