search
LoginSignup
0

More than 1 year has passed since last update.

posted at

ApacheでIPアドレスによるアクセスを禁止する

はじめに

作成したサイトにせっかくドメイン名を付与しても、サイトにIPアドレスでアクセスできると「IPアドレスでアクセスした際のURL」がGoogleなどにキャッシュされてしまうことがあります。
「IPアドレスでアクセスした際のURL」がキャッシュされてしまうと、検索エンジン側でコンテンツが重複しているとみなされてしまい、SEOにも影響が出る可能性があります。

そこで今回は、IPアドレスによるアクセスを防ぐための方法をまとめてみました。

テストに使用した環境

AWS上のサーバーを利用しました。

  • OS
    • Amazon Linux 2
  • Apache
    • 2.4.51

事前作業

Apacheのインストール

Webサイトのドキュメントルート

  • Apacheのデフォルトのまま、/var/www/htmlにしています。

ドメインの取得

  • 今回は割愛します。

Apacheの設定変更

VirtualHostの設定ファイルの作成

  • /etc/httpd/conf.d以下に、vhosts.confという設定ファイルを作りました。
    • ファイル名の末尾が.hostsであれば読み込んでくれるそうなので、必ずしも同じ名前(vhosts.conf)にする必要はありません。
  • VirtualHostディレクティブで指定したドメイン名に合致するものが無い場合(※ここではIPでアクセスされた場合)は、「403 Forbidden」が返されるように設定します。
[ec2-user@ip-10-0-1-102 ~]$ cd /etc/httpd/conf.d/
[ec2-user@ip-10-0-1-102 conf.d]$ sudo vi vhosts.conf
--------------------------------------------------------------------------------
<VirtualHost *:80>
    ServerName any
    <Location />
        Order Deny,Allow
        Deny from all
    </Location>
</VirtualHost>

<VirtualHost *:80>
  ServerName {ドメイン名}
  DocumentRoot "/var/www/html"
</VirtualHost>
--------------------------------------------------------------------------------

設定ファイルの内容の確認

  • 念のため、設定ファイルの記述(構文)が正しいかを確認しておきます。
[ec2-user@ip-10-0-1-102 conf.d]$ sudo apachectl configtest
Syntax OK

設定の反映

  • Apacheを再起動して設定を反映します。
[ec2-user@ip-10-0-1-102 conf.d]$ sudo systemctl restart httpd

動作確認

  • curlコマンドを使って、ドメインだとコンテンツを正常に取得できる(HTTP STATUS=200)ことと、IPだとコンテンツを取得できない(HTTP STATUS=403)ことを確認します。
[ec2-user@ip-10-0-1-102 conf]$ curl -I http://{ドメイン名}
HTTP/1.1 200 OK
...

[ec2-user@ip-10-0-1-102 conf]$ curl -I http://{IPアドレス}
HTTP/1.1 403 Forbidden
...

参考URL

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0