QA@IT

Apacheのポート解放

5016 PV

リクエストが80ポートによるものである時にApacheがリクエストを受付けてリバースプロキシを行う。

リバースプロキシされた側のTomcatアプリケーションでApacheのドキュメントを8081ポートでGETしに行く

  • ただし、8081ポートへのリクエストはlocalhostしか受け付けない

というようにApacheのポートの役割を2種類行いたいのです。

  1. 80ポートはリバースプロキシを行う
  2. 8081ポートは、アプリ側のポートとして働き、外部アクセスは不能

このような複数ポートの使い分けはできますか?

  • コメント追記しました。 -

回答

いまいちよくわからんのですが、Apacheの8081でホストするのは制限つきリソースか何かで、Tomcat上のアプリを介してしか取得できないようにしたいんでしょうか。

とにかく二つのポートでサイトを立ち上げることになるので、Apacheの設定はこの辺を参考に。
http://httpd.apache.org/docs/current/vhosts/examples.html#port
ひとつのサーバ上で複数サイトを動作させることをヴァーチャルホストっていいます。
例のようにやり方はいろいろあります。
別に特別なことではなく、昔からよくやります。
設定が多少複雑化してしまいますけどね。

んで、8081ポート側についてアクセス制限をかけておけばよいでしょう。
この辺が参考になるかな?
http://www.adminweb.jp/apache/allow/index1.html
http://httpd.apache.org/docs/2.2/howto/access.html

定番設定だとこれかなあ。

Order deny,allow
Deny from all
Allow from localhost

全拒否してローカルだけ許可の設定、のはず・・・
これをDirectoryディレクティブに設定してあげればよいかなと。
http://httpd.apache.org/docs/2.2/mod/core.html#directory

補足ですが、DirectoryのほかLocationやFilesといったディレクティブで対象のリソースを指定する方法もあります。
ただ、アクセス制限をかける場合はDirectoryを使っておいた方が無難です。
http://httpd.apache.org/docs/2.2/sections.html

ただまあ、アクセス制限はWebサーバでやるよりファイアウォールやルータでやった方が楽で管理しやすいですよ。

編集 履歴 (0)
  • 8081でアクセス制限することにしました!
    ご説明ありがとうございました!
    -

ファイアウォールで外部からの8081を弾けばいいように思いますがそれではダメですか?


解決済みですがせっかくなのでipfwの設定方法を簡単に。
(先に言っておきますがシステム起動時に実行させる方法を示してないので不完全です。)
あくまでこういうやり方もあります程度で。

$ sudo ipfw list

で設定済みの情報を確認します。
ここで左側に出ているのはインデックスですのでこれから指定するインデックスとかぶらないようにします。
なにもしていなければ

65535 0 0 allow ip from any to any

だけが表示されると思います。

続いて設定です。8081ポートへの自分からの接続は許可し、外部からは拒否する場合は以下の 2コマンドを実行します。

$ sudo ipfw add 100 allow from me to me 8081
00100 allow ip from any to any src-ip me dst-ip me dst-port 8081
$ sudo ipfw add 101 deny from any to me 8081
00101 deny ip from any to me dst-port 8081

これで以上で今回の目的は果たせると思います。
ちなみに

$ sudo ipfw delete 101

などとインデックスを指定すれば削除できます。

ただし再起動すると戻ってしまいますので、 LaunchDaemons などで起動時に実行させるなどの工夫が必要になります(こっちの方が面倒かも)。
サーバーのスタートアップスクリプトがあるならそこに含めてしまってもいいかもしれませんね。

編集 履歴 (1)
  • MacOS MountainLionを使っているんですが、システム環境設定のところのファイアウォールがアプリケーションごとにのみ設定を行う仕様になっているので、難しいのではないでしょうか? -
  • いや、BSDらしくipfw入ってますので、(設定方法を覚えるのはむずかしいかもしれませんが)、実現可能性で言えば難しくないと思います。
    Macで設定しなくてもルーターで設定してもいいと思いますし。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。