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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

2回答

5728閲覧

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

homeless_heart2

総合スコア29

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

2クリップ

投稿2017/05/09 11:53

編集2017/05/10 12:29

やりたいこと

  • 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/

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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

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

httpd.conf

1<Location /> 2 <RequireAll> 3 Require all granted 4 Require not ip IP_addr_A 5 </RequireAll> 6 ProxyPass ajp://localhost:9999/ 7</Location> 8 9<LocationMatch ".*/maintenace.jsp"> 10 Require ip IP_addr_B 11</LocationMatch>

で動くでしょうか?

投稿2017/05/10 13:24

miyahan

総合スコア3095

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

homeless_heart2

2017/05/10 13:43

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

0

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

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

投稿2017/05/09 17:55

編集2017/05/09 18:04
miyahan

総合スコア3095

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

homeless_heart2

2017/05/10 12:27

ご回答ありがとうございました。 ご指摘の文法等については、 apache2ctl configtest でエラーがないことを確認し、 apache2ctl graceful で反映しているので、問題はなさそうです。 質問の仕方が悪く、apacheとtomcatの連携の設定は関係ないと思い書いていませんでしたが、どうやらそこが本質のようです。apacheで処理しているファイルはアクセス制限が効きますが、tomcatへ転送しているファイルが期待とおりに動作しないことを確認しました。 質問内容を更新しましたので、お手間でなければご確認頂ければ幸いです。
miyahan

2017/05/10 13:10

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問