0

目標: MongrelsでRailsアプリケーションを実行し、基本HTTP認証を実行した後にApacheを介したアクセスを許可する

問題: 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]

これは問題なく機能します。Apacheはユーザーに認証を強制し、成功した場合はRailsに転送します。静的ファイルなどを処理し、それらの認証をトリガーするために、数行を省略しました。

Railsの観点から見た環境変数には、通常のエントリに加えて、、が含まれていHTTP_X_FORWARDED_HOSTます。カスタム環境変数を書き換えルールに追加して渡すことができませんでした:HTTP_X_FORWARDED_SERVERHTTP_X_FORWARDED_FOR

RewriteRule ... [P,QSA,L,E=foo:bar]

何かご意見は?

4

1 に答える 1

3

RequestHeaderディレクティブを使用REMOTE_USERしてHTTPヘッダーを挿入してみてください。これは、このスレッドの人々のために働いたようです:

RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule . - [E=RU:%1]
RequestHeader add X-Forwarded-User %{RU}e
于 2009-11-07T04:58:34.133 に答える