LoginSignup
2
1

More than 1 year has passed since last update.

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

Posted at

はじめに

作成したサイトにせっかくドメイン名を付与しても、サイトに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

2
1
0

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
  3. You can use dark theme
What you can do with signing up
2
1