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

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

ただいまの
回答率

88.91%

Apache2.4 特定のファイルへのアクセス制限の方法

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 2,967

やりたいこと

  • DocumentRoot/配下の全ファイルについて、あるアドレス(IPアドレスA)からのアクセスを拒否し、他からは全てアクセスさせたい
  • ただし、DocumentRoot/maintenace.jsp だけは、あるアドレス(IPアドレスB)からのみアクセス可とし、他からは全て拒否したい

次のように設定してみたところ、
IPアドレスAのアクセス制限は期待とおりですが、
IPアドレスB以外からもmaintenace.jspにアクセスできてしまいました。

IPアドレスBでアクセス許可したいのは、tomcatで処理しているファイルです。
apache2.4 と tomcatを連携させており、静的ドキュメント以外はtomcatへ渡しているのですが、
tomcatへ転送されるために、アクセス許可設定が効いていないのでしょうか?

tomcatの設定でのアクセス制限でなく、apacheの設定で制限する方法を探しています。

<Directory /DocumentRoot/>
        <RequireAll>
                Require all granted
                Require not ip IPアドレスA
        </RequireAll>
# この設定は動作しません(tomcatで処理)
        <Files maintenace.jsp>
                Require ip IPアドレスB
        </Files>
# なお、この設定は動作しました(apacheで処理)
        <Files maintenace.html>
                Require ip IPアドレスB
        </Files>
</Directory>

# 静的ドキュメントはapacheで処理
ProxyPass /js/ !
ProxyPass /css/ !
ProxyPassMatch  ^/.*\.(html|ico|txt|png)$  !
# 上記にマッチしなければtomcatへ
ProxyPass / ajp://localhost:9999/

どのように設定したら良いのでしょうか。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

+1

Tomcatとの連携でつまづいているということで、再度回答します。

ということであれば、Location をつかってみてはどうでしょうか。

<Location />
    <RequireAll>
        Require all granted
        Require not ip IP_addr_A
    </RequireAll>
    ProxyPass ajp://localhost:9999/
</Location>

<LocationMatch ".*/maintenace.jsp">
    Require ip IP_addr_B      
</LocationMatch>

で動くでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/10 22:43

    動作しました。ありがとうございます。
    転送が絡むと、Directoryディレクティブの設定は効いてくれないんですね。
    Locationディレクティブは転送前に処理されるってことかな。勉強になりました。

    キャンセル

0

設定の書き方はあっていると思います。(私の環境では期待通り動作しました)ということは設定が反映されていないか、値が間違っている可能性が考えられます。

  • 設定を変えた後、Apache を再起動して設定を反映させましたか?
  • <Directory [ドキュメントルート]> の設定はデフォルトの httpd.conf に存在していると思いますが、そこを直接書き換えるか、もしくはそれよりに追加しているでしょうか? もしデフォルトの設定より前に今回の設定を入れてしまうと上書きされて無効になってしまいます。
  • この設定は本当に読み込まれているでしょうか?(例えばこの設定の中にデタラメな文字を打ち込んでApacheを再起動したときに Syntax Error で起動しなくなればきちんと読み込まれていると確認できます)
  • <Directory> のパスはあっていますか?(そもそも IPアドレスA からのアクセス拒否は動作しているでしょうか?ここも動いていないとすればパス間違っていると思います)
  • maintenace.html の綴りはあっていますか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/10 21:27

    ご回答ありがとうございました。

    ご指摘の文法等については、
    apache2ctl configtest でエラーがないことを確認し、
    apache2ctl graceful で反映しているので、問題はなさそうです。

    質問の仕方が悪く、apacheとtomcatの連携の設定は関係ないと思い書いていませんでしたが、どうやらそこが本質のようです。apacheで処理しているファイルはアクセス制限が効きますが、tomcatへ転送しているファイルが期待とおりに動作しないことを確認しました。
    質問内容を更新しましたので、お手間でなければご確認頂ければ幸いです。

    キャンセル

  • 2017/05/10 22:10

    ああ、tomcatに転送しているんですね。では別途回答します。

    キャンセル

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

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

関連した質問

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