外部からのアクセスを制限する
インターネットで公開されているWebサーバーは、不特定多数からリクエストを受け付け、レスポンスを返すのが仕事です。しかし、学習目的用のテストサーバーにおいては、正常にアクセスできるのは自分だけで十分です。万が一にもインターネットを通じて不特定多数から自由にファイルが閲覧できてしまうことがあっては問題ですからね。
したがってテスト環境においては、適切な設定をすることにより、インターネットからのアクセスを遮断しなければなりません。多くの環境では、ルータやファイアウォールにてブロックされるようになっていることが多いとは思いますが、念のため設定しておきましょう。
ここでは、Apacheの設定ファイルであるhttpd.confを修正することにより、外部からアクセスされないようにする方法をご紹介します。httpd.confについてわからない方は、このカテゴリTOP、Webサーバーの設定ページに記載していますのでそちらを先にご覧ください。
当サイトに記載されているものは、全て学習目的のローカルテストサーバー向けです。その他の用途には適切でない可能性もありますのでご注意下さい。
外部からのアクセスを制限する設定方法
ここでは二つの方法をご紹介します。一つ目の方が簡単ですが、二つ目の方が(ちょっと難しいですが)より利便性が高い方法です。お好みの方で設定してみてください。
MAMPをお使いの方
MAMPをお使いの方は、方法1はトラブルのもとになる場合があるので推奨しません。方法2の、[ Order,Deny,Allowディレクティブを修正する ]の方をお試しください。
方法1-Listen ディレクティブを修正する
httpd.conf内に、下記のように表記されている部分があると思います。
これを、以下のように変更します。赤い文字が追加する部分です。
(かならず半角で入力してください)
Listen 127.0.0.1:80
[ # ] をつけることで、初期状態をコメントアウト(無効化)して、新しい設定をしているという訳です。
この設定により、このサーバは、127.0.0.1、つまりローカルPCでなければアクセスできないようになります。
方法2- Order,Deny,Allowディレクティブを修正する
方法1は非常に簡単でしたね。PCを1台でお使いの方には簡単なのでいいでしょう。しかし方法1は、LAN上にある別のPCからの接続をも拒否してしまうため、複数のPCを使う環境では不便なこともあります。Webデザインの学習中はブラウザの表示チェックをよくしますから、複数のPCをお持ちの方は、同一LAN上にある別PCでも表示チェックできた方が便利ですよね。その場合にふさわしい設定案をご紹介します。
まず、下記のようにDocumentRoot~と記載されている部分を見つけてください。(グレー部分、D:/wwwは、お使いの環境によって異なります。)
上記グレー部分はドキュメントルート(http://localhost/でアクセスできるディレクトリ)のことです。このグレー部分のファイルパスを覚えておいてください。見つかったら、先ほどのファイルパスと同様のパスが記載されている、下記のような部分を見つけます。(以後DocumentRootが、D:/wwwだとして記載します。この部分は各自DocumentRootの設定に読みかえてください)
~中略~
</Directory>
さて、見つかりましたか?該当部分をよ~く見ると、下記の太字部分のような感じに記載されている部分があるかもしれません。
~中略~
Order Allow,Deny
Allow from all
</Directory>
上記太字部分が今回のキモです。この部分は多少異なるかもしれませんが、もしあれば、これを下記のようにします。無ければ、#を除いた赤字部分を該当部分に書き足してください。
~中略~
#Order Allow,Deny
#Allow from all
Order Deny,Allow
Deny from all
Allow from localhost 127.0.0.1
Allow from 192.168
</Directory>
※11/07/26補足
環境によっては、Allow fromの部分を下記のように一つずつ設定しないと動かない場合もあるようです。もし
動かない場合は、下記もお試しください。
Allow from localhost
Allow from 127.0.0.1
Allow from 192.168
192.168とある部分は、プライベートIPアドレスの不変部分を指しています。プライベートIPアドレスはこれ以外にも考えられますが、通常のご家庭ではこれがほとんどでしょう。(もしこれ以外のプライベートIPをお使いであれば、ネットワークの管理者に尋ねてみてください)
個別IPでも指定できます。
上記設定では192.168からはじまるIPからのアクセスは全て受け入れますが、プライベートIPアドレスで予約されているIPなので、通常は問題ないでしょう。ただし万一特別な事情があり不都合が生じる場合は、Allow from 192.168の部分を、フルのプライベートIPアドレスで指定してもかまいません。
半角スペースで区切れば、複数指定することも可能です。
(例:
Allow from 192.168.1.2 192.168.1.3 192.168.1.4
※補足 もしうまくいかない場合は、一行ずつ指定してみてください。
これだけでもテスト用には大抵大丈夫でしょうが、今回設定した部分以外の、下記のような形式の部分全てを下記のようにしておくとさらに確実です。
~中略~
Order Deny,Allow
Deny from all
</Directory>
コメント
- けいた さん 2010年10月02日17時28分
プライベートipアドレスを打ち込むそうですが、192.168だけで良いのですか? その後も数字が続いている場合、それも打ち込むのですか?
- 馬場誠 さん 2010年10月03日16時38分
192.168から始まるIPアドレスが設定対象になるという意味ですので、192.168だけで大丈夫です。 もちろん、下記のように、個別のフルIPアドレスを指定しても大丈夫ですよ。 Allow from 192.168.1.2 192.168.1.3 ただしこちらは、自動的にプライベートIPアドレスが割り当てられるようにしている場合、いつのまにかプライベートIPアドレスが変わってしまい、再設定が必要になることがあります。 それが面倒な場合は、プライベートIPアドレスを固定にするなどの対策をするのもいいかもしれませんね。
- momo さん 2011年05月16日17時06分
はじめまして。 osx6にmamp1.9.6.1を入れてみたんですが、 アクセス権限の管理を ”方法2- Order,Deny,Allowディレクティブを修正する”で修正し、mampを再起動したところ、どういう訳か、mysqlサーバーが起動しません。 元に戻すと起動します。 当方初心者でして、何が何だかわからない状態でして、申し訳ありません。解決方法等アドバイスをいただけたら、幸いです。
- 馬場誠 さん 2011年05月16日20時44分
momoさん、はじめまして。 Apacheは起動するけれど、MySQLのみ起動しないということですよね。 こちらの環境(1.7.1)で確認してみたところ、特に問題は発生しませんでした。 ただし、他の環境のMAMP(1.9系だと思います)をさわった際、MySQLが立ち上がらなくなることは目にしたことがあります。 外部からのアクセスを制限するような設定をしていない状態だったので、もともと不具合がある(?)のかもしれません。 立て込んでいて今すぐには確認できないのですが、近日中に最新バージョンのMAMPでも確認してみますね。
- 馬場誠 さん 2011年05月17日20時12分
今日、MAMPの1.9.6.1を入れて試してみました。 インストールしてすぐの状態で、方法2の修正をして起動させてみたところ、問題なくMySQLも起動しました。 しかし、その後ApacheとMySQLのポートをそれぞれ標準ポートに変更してから起動させようとしたら、MySQLが起動しなくなる現象が発生しました。 あれこれいじってみましたが原因不明だったので、OSを再起動させたところ、無事MySQLも起動するようになりました。 同じ原因かは分かりませんが、まだOSを再起動させていなければ試してみてはいかがでしょうか。 他には、過去にMySQLをインストールされたことがあれば、残っているファイルが影響を与える可能性もあるようです。
- Kichi さん 2011年10月02日19時53分
はじめまして。 7月からwebの勉強を始めたばかりの者です。 PHPの勉強の為にMAMPをDLし、設定を参考とさせていただいてます。 MAMP利用の為、方法2を試しているのですが、apache2フォルダ内のhttpd.confファイルは見つかったのですが、その中に記載されている下記文章が見つかりません。 <Directory "D:/www"> ~中略~ </Directory> <Directory "/Library/WebServer/CGI-Executables"> AllowOverride None Options None Order allow,deny Allow from all </Directory> 上記の内容か <Directory "/Library/WebServer/Documents"> 〜中略〜 Order allow,deny Allow from all </Directory> 上記内容ならあるのですが…。 見ているファイルが違っている可能性などあるのでしょうか?- 馬場誠 さん 2011年10月03日19時14分
Kichi さん、はじめまして。 httpd.confファイルですが、元もとMac OS XにインストールされているApacheのhttpd.confをご覧になっていませんでしょうか。 MAMP利用の際に編集するhttpd.confは、MAMP内のhttpd.confです。 × /private/etc/apache2/httpd.conf ○ /Applications/MAMP/conf/apache/httpd.conf 私の手元のMAMPだと、DocumentRootが初期設定で/Applications/MAMP/htdocsとなっていました。もし同様の場合は、下記のような場所を探してみてください。 <Directory "/Applications/MAMP/htdocs"> ~中略~ </Directory>


