質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.78%

ApacheでREMOTE_USERを渡しつつ、keepaliveをOFFにしたい

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 750

umegon

score 26

こんにちは、Redmineでアプリケーションを構築していてApacheの設定が上手くできずに困っております。

長いですが、呼んでいただけると嬉しいです。
また最終的にご相談させて頂きたいことは一番したに書かせて頂いております。

Apache/2.4.37 (Win32)を使用しております。。

▽根本問題
Redmineのjavascript(恐らくajax?)で動いているファイル添付の機能が、画面ロードして数秒後に添付するとerrorとなる。

▽根本問題の原因
完全に理解できているわけではないのですが、ApacheのKeep Aliveが5秒に設定してあることです。
(正確にはこの後記載するAD認証も組み合わさり発生している模様です。)

〇添付できるパターン1
画面ロード完了
↕ 約5秒間
添付可能

〇添付できるパターン2
画面ロード完了
↕約5秒間
添付処理ERROR
↕約5秒間
添付可能

▽解決するために考えたこと
1、KeepAliveのTimeを伸ばす。
→例えば1時間KeepAliveが続くように設定すると画面は解決しますが、プロセスがずっとつかみっぱなしになると認識しているので現実的ではないと考えます。かといって2、3分などにしたところで、投稿内容を記載している間に2,3分経過してしまっては意味ないと思い、このプランは無いかなと思いました。

2、KeepAliveをOffにしてしまう。
→KeepAliveをOFFにしたら、レスポンスが少々悪くなってしまうが、この問題は解決できると思いました。
→しかし401エラーが発生し、一切画面にログインできなくなってしまいました。
→こちらは、Apacheで別で設定しているAD認証の為の設定を外したら、起こらなくなったのでApacheに記載されているAD認証の結果をREMOTE_USERに渡して疑似AD認証を実現している部分と相性が悪そうということが分かりました。
→ここまできて、errorを無くすためにはKeep AliveをOFFにしないといけなさそうだが、
OFFにするとAD認証ができなくなってしまうという状態になり、どうしたら良いものかと頭を悩ませております。

#▽KeepAlive設定
KeepAlive off
KeepAliveTimeout 5

HostNameLookups off

NameVirtualHost *:80

<VirtualHost *:80>
  #対象HOST名
  ServerName "実際にはホスト名"
  #Root
  DocumentRoot "実際にはソースのルートフォルダ"
  #access log
  LogFormat "%h %l %u %t \"%r\" %>s %b" faqcommon

 ~その他いろいろログの設定(省略)

  #AD設定
  <Location />
    AuthName "実際にはシステム名"
    AuthType SSPI
    SSPIAuth          On
    SSPIAuthoritative On
    SSPIDomain kmjp
    SSPIOfferSSPI     On
    SSPIOfferBasic    On
    SSPIBasicPreferred  Off

    SSPIOmitDomain    On
    SSPIUsernameCase  lower
    #AuthUserFile C:\.htpasswd
    Require valid-user

    RewriteEngine on
    RewriteCond %{REMOTE_USER} (.*)
    RewriteRule .* - [E=X_REMOTE_USER:%1]
    RequestHeader set X-Forwarded-User %{X_REMOTE_USER}e
  </Location>

  #リダイレクト設定
  RewriteRule /$ /projects [R]

  #ロードバランス設定
   ProxyPass / balancer://mycluster/ lbmethod=byrequests timeout=1
   <Proxy balancer://mycluster/>
    BalancerMember http://127.0.0.1:8080 loadfactor=1
    BalancerMember http://127.0.0.1:8081 loadfactor=1
    #BalancerMember http://127.0.0.1:8082 loadfactor=1
  </Proxy>

  <Location /balancer-manager>
    SetHandler balancer-manager
    Require host none
    Require ip 127
    Require ip 10
  </Location>

</VirtualHost>

同じようなバーチャルホスト設定がシステム分。。。記載してあります。

〇ApahceからrubyへUSERを渡すために参考にしたところ。
リバースプロキシで認証したREMOTE_USERを受け側のapacheに渡す

〇ApacheでAD認証するために参考にしたところ
Apache2.4(Windows版x64)にWindowsドメイン認証を利用して、シングルサインインを実装する

▽ご相談したいこと
個人的にはKeepAvileが有効な時は初めにリクエストがサーバーに届いた時のヘッダーがそのまま使われ続けていたが、KeepAliveをOFFにすると、恐らくそれが使われなくなってしまって、認証が通らなくなってしまって401が出てしまっているのかな?と考えてはいるのですが、でもそうであればAD認証の機能をがっつり外した時に、ADログインは出来ませんがそもそも画面にアクセスできるのが謎で、、、詰まっております。

ApacheやAD認証については、色々ぐぐって学習中なのですが、この問題に関してはどこから考えたらいいのか見当もつかなくなってきております。
何か少しのヒントでもあればご助力頂けると大変助かります。

よろしくお願いいたします。
またここまで読んでいただきありがとうございました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る