- - PR -
Apache SourceIPアドレスによってアクセスさせるディレクトリを変えたい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-11-29 11:04
Apacheにて、
SourceIPアドレスによってアクセスさせる ディレクトリを変えたい場合の方法 192.168.0.0/24 -> /usr/local/apache/htdoc 10.0.0.0/24 -> /usr/local/apache/htdoc2 192.168.0.0/24のクライアントからは、htdocsへはアクセス不可。 10.0.0.0/24のクライアントからは、htdocs2へはアクセス不可。 URLは、どちらも同一としたい。 httpd.confに、DocumentRoot?というところの設定で 可能なのでしょうか。 @ITの右上のボックスで検索しました、mod_rewirteという キーワードも出てきましたが、りライトすると、URLが 変わってしまうと思われ、正しいやり方がわかり兼ねて おります。 よろしくお願い致します。 | ||||||||
|
投稿日時: 2007-11-29 11:53
SourceIPで・・というのはやったことがありませんね。各々のクライアントからはどういうアクセスになるんでしょう?TargetIPもしくはホスト名が違うようであればVirtualHostで可能でしょうけど。
http://httpd.apache.org/docs/2.0/ja/vhosts/ | ||||||||
|
投稿日時: 2007-11-29 12:25
Web検索とか を利用する時に 困りませんか
| ||||||||
|
投稿日時: 2007-11-29 14:34
こんにちは。
というのは、例えば、 192.168.0.XX から、http://example.com/test.html にアクセス → /usr/local/apache/htdoc/test.html の内容が返る 10.0.0.XX から、http://example.com/test.html にアクセス → /usr/local/apache/htdoc2/test.html の内容が返る ということでしょうか? Apacheのみで解決したいなら、mod_rewriteで十分でしょう。 設定例としては、ドキュメントrルートを /usr/local/apache にして、 REMOTE_ADDR を見て、192.168.0.XX からの接続であれば、 /test.html → /htdoc/test.html というように rewrite するルールを書くような形がとれるでしょう。 詳しくは、mod_rewrite のドキュメントの RewriteCond と RewriteRule をご参照ください。 ※もっと上手い設定もあるかもしれません
…これは、何を心配されているのでしょうか? なお、Linuxであれば、netfilter/iptables の併用という手もありそうです。 ポート80番と8080番で動作するApache ( 2インスタンス、もしくは1インスタンスでバーチャルホスト ) を用意しておき、netfilter の機能で、10.0.0.XX からのポート80番宛ての接続は、8080番へNATしてしまうのです。 ※192.168.0.XX からの接続の場合はNATしない。 これにより、クライアントは80番ポート宛に接続しているにも関わらず、処理するApacheは8080番で動作しているもの、という状況が作り出せます。 後は、それぞれのApacheで設定を別々に持っておけばO.K.という具合です。 | ||||||||
|
投稿日時: 2007-11-29 22:20
shimixさま
ご返答ありがとうございます。 バーチャルホストというものあるのですね。 今回は、ホスト名、IPは同じを予定しております。 情報ありがとうございました。 MMXさま ご返答ありがとうございます。 Web検索をするとき。。これは、どういう 場合の事でしょうか。一般検索エンジンに 同じ記事が、2重に登録されてしまうということでしょうか。 angelさま ご返答ありがとうございます。 >というのは、例えば、 > 192.168.0.XX から、http://example.com/test.html にアクセス > → /usr/local/apache/htdoc/test.html の内容が返る > 10.0.0.XX から、http://example.com/test.html にアクセス > → /usr/local/apache/htdoc2/test.html の内容が返る >ということでしょうか? はい、そのとおりです。 ファイルサーバのメインコンテンツにアクセスさせる場合と スナップショットデータ(バックアップして複製したデータ)に アクセスさせる場合とを、クライアントのIPによって分けたいと 思っており、今回の要望を書かせて頂きました。 早速下記のとおり書いてみたところ、動作しましたが、 DocumentRoot "/var/www/html" <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REMOTE_ADDR} !^192\.168\.0\. RewriteRule ^/.*$ /index.html </IfModule> DocumentRoot "/var/www/html2" <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REMOTE_ADDR} !^10\.0\.0\. RewriteRule ^/.*$ /index.html </IfModule> 192.168.0.x → /var/www/html/ 10.0.0.x → /var/www/html2/ へ、アクセスし意図する動作をしましたが 10.0.0.xのネットワーク上のPCからでも /var/www/html/test/index.html へアクセスできてしまいました。 アクセス制御を方法は、一般的には何で 行うのでしょうか。 もしご存知でしたらお教え願います。 |
1