L'objectif: exécuter une application Rails sur Mongrels, ce qui permet l'accès par Apache après avoir fait l'authentification HTTP de baseComment puis-je passer le nom d'utilisateur HTTP d'Apache à Mongrel/Rails?
Le problème: lire le nom d'utilisateur fourni à l'intérieur Rails
Apache:
<Proxy balancer://mongrel_cluster>
BalancerMember http://127.0.0.1:4001
# ...
Order deny,allow
Deny from all
AuthType Basic
AuthName "<realm>"
AuthUserFile "<users-file>"
AuthGroupFile "<groups-file>"
Require group <group>
Satisfy Any
</Proxy>
RewriteEngine On
# ...
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]
Cela fonctionne très bien, Apache force l'utilisateur à s'authentifier et à transférer vers Rails en cas de succès. J'ai omis quelques lignes pour gérer les fichiers statiques et autres, et déclencher l'authentification pour eux aussi. Les variables d'environnement de la perspective de Rails contiennent les entrées habituelles et en plus HTTP_X_FORWARDED_HOST
, HTTP_X_FORWARDED_SERVER
et HTTP_X_FORWARDED_FOR
. J'ai été incapable de transmettre des variables d'environnement personnalisées en les ajoutant à la règle de réécriture:
RewriteRule ... [P,QSA,L,E=foo:bar]
Des pensées?
Frickin A, cela fonctionne! Merci beaucoup! – Lemming