.htaccessとApache運用
  ~よくあるお問い合わせより~



サーバ運用超入門勉強会

            Copyright Digital-Effect Network Co., Ltd. All rights reserved.
アジェンダ


       お話する内容

       • 正しい.htaccessなのにサイトが見れない

       • アクセス制限してるけどサイトが見れる?




2012/12/21       -1-   Copyright Digital-Effect Network Co., Ltd. All rights reserved.
正しい.htaccessなのに・・・


       正しい.htaccessなのにサイトが見れない

       • 新しく.htaccessファイルを置いてみた。

       • 新しい機能を使ってみた。
             (ベーシック認証しか使っていなかったが、リダイレクト設定を追加した等)



       よくありがちなこと。
       でもたったこれだけのことだけど、これでサイトが見れなくなってしまいました。
       そんな経験ありませんか?



2012/12/21                  -2-   Copyright Digital-Effect Network Co., Ltd. All rights reserved.
正しい.htaccessなのに・・・


       .htaccessファイルを置くだけで障害!
       •     Apacheインストール

       •     Webコンテンツをアップロード
               ↓
       •     一般公開まで認証をかけておこう(Basic認証)
               ↓
       •     .htaccessファイルの書き方をGoogle検索
               ↓
       •     そのままコピペ
               ↓
       •     .htaccessファイルを設置
               ↓
       •     認証がかからない!
       •     エラーメッセージが出る!



2012/12/21                   -3-    Copyright Digital-Effect Network Co., Ltd. All rights reserved.
正しい.htaccessなのに・・・


       例:ググって2番目に出てきた「htaccesseditor.com」
       というサイトで .htaccessファイルを作成してみた。




2012/12/21                  -4-   Copyright Digital-Effect Network Co., Ltd. All rights reserved.
正しい.htaccessなのに・・・


       作成した内容
       •     ファイル一覧の拒否
             –   「する」を選択 (特別な意図がない限り「する」をお勧めします、と書かれていたので。)

       •     ベーシック認証を設定

       •     インデックスファイルの表示設定
             –   Index.htm > index.html の順序で参照するよう設定

       実際に作成した.htaccessファイルの中身
      <Files ~ "^¥.(htaccess|htpasswd)$">
      deny from all
      </Files>
      Options -Indexes
      AuthUserFile /var/www/html/.htpasswd
      AuthGroupFile /dev/null
      AuthName "Please enter your ID and password"
      AuthType Basic
      require valid-user
      DirectoryIndex index.htm index.html
      order deny,allow

2012/12/21                            -5-            Copyright Digital-Effect Network Co., Ltd. All rights reserved.
正しい.htaccessなのに・・・


       先ほどの.htaccessファイルをサーバにアップ…

      Internal Server Error がッ!



       .htaccessは正しいハズ。
       でもサイトは表示できない。

       ・・・なぜ!?

2012/12/21                  -6-   Copyright Digital-Effect Network Co., Ltd. All rights reserved.
正しい.htaccessなのに・・・

      原因は?
      httpd.conf の設定で.htaccessファイルの設定を許可していない

      Apacheは、インストール直後のデフォルトの場合、.htaccessの設定が全て禁止されます。
      (※yum インストールの場合)

      Apacheのエラーログにこんなログが出ます。
      [Tue Nov 13 16:01:13 2012] [alert] [client 172.16.1.139] /var/www/html/.htaccess:
      DirectoryIndex not allowed here

      「.htaccessでインデックスファイルの読み込み順序を設定(DirectoryIndex)したが、
        httpd.confの設定で許可されていない処理の為、エラーが発生した」ということが原因
        です。
                                                                        機能Bはhttpd.confで禁止の設定

             機能A   httpd.conf   機能C            .htaccess
             許可                 禁止
                                                                          .htaccessで機能Bを使う設定

             機能B                機能D
                                許可               機能B
             禁止
                                                                                    エラー発生!

2012/12/21                               -7-           Copyright Digital-Effect Network Co., Ltd. All rights reserved.
正しい.htaccessなのに・・・


       許可するには?
       .htaccessによる制御を許可するように、httpd.confの設定を修正します。

      デフォルトの状態だと以下の内容(<Directory "/var/www/html">)
      AllowOverride None

      DirectoryIndexを許可するように設定を変更します。
      AllowOverride AuthConfig Indexes Limit Options


       これでApacheを再起動して、期待どおりに.htaccessが動きます。




2012/12/21                      -8-        Copyright Digital-Effect Network Co., Ltd. All rights reserved.
正しい.htaccessなのに・・・


       AllowOverrideの設定の意味
       AuthConfig
       認証に関するディレクティブの使用を許可する。(AuthUserFile, AuthName, AuthType,,requireなど)

       Indexes
       ディレクトリインデックスを制御するためのディレクティブの使用を許可する。(DirectoryIndexなど)

       Limit
       ホストへのアクセス制御を行うためのディレクティブの使用を許可する。(Allow, Deny, Orderなど)

       Options
       特定のディレクトリにおける機能を指定するためのディレクティブの使用を許可する。
       ※上記以外に、FileInfo(ドキュメントタイプを制御するディレクティブ)がある。

      Options -Indexes                                  →Optionsの許可が必要
      AuthUserFile /var/www/html/.htpasswd
      AuthGroupFile /dev/null
      AuthName "Please enter your ID and password“       →AuthConfigの許可が必要
      AuthType Basic
      require valid-user
      DirectoryIndex index.htm index.html               →Indexesの許可が必要
      order deny,allow                                  →Limitの許可が必要

2012/12/21                            -9-            Copyright Digital-Effect Network Co., Ltd. All rights reserved.
正しい.htaccessなのに・・・


       ここまでのまとめ
       httpd.confにて、AllowOverrideで許可されていない設定を
       .htaccessに記載すると、.htaccessをサーバに保存した瞬間に
       Internal Server errorが発生します。
       例えば、以下のような.htaccessの場合、AllowOverrideにOptionsとLimitの許可設定が
       ないと、Internal Server Errorとなります。
      Options -Indexes
      order deny,allow
      allow from 192.168.1.5
      deny from all



       httpd.confとの関係を知らないまま、.htaccessを気軽に設置したりすると、思わぬところで
       サーバエラーが発生するかもしれません。
       サーバ管理者や、サーバ管理会社に事前にサーバの仕様を確認しておきましょう。

2012/12/21                     - 10 -   Copyright Digital-Effect Network Co., Ltd. All rights reserved.
アクセス制限してるけどサイトが見れる?




       アクセス制限したら、Apacheのデフォルトの
       ページが表示される?




2012/12/21          - 11 -   Copyright Digital-Effect Network Co., Ltd. All rights reserved.
アクセス制限してるけどサイトが見れる?

       アクセス制限したら、Apacheのデフォルトのペー
       ジが表示される。なぜ?
      Options -Indexes
      order deny,allow
      allow from 192.168.1.5
      deny from all
       先ほどの設定内容の場合、192.168.1.5以外のIPからアクセス(※1)すると、Apahceの
       デフォルトのページ(↓)が表示されてしまいます。
                                        (※1) http://192.168.1.5/ というようなURLにアクセスした場合に限ります。
                                                            http://192.168.1.5/test.html といったURLの場合は、
                                                                                   Forbiddenの表示となります。




                                                     アクセス制限してるから、許可して
                                                     いないIPからのアクセスは全て、
                                                     Forbiddenの表示にしたい。




2012/12/21                     - 12 -    Copyright Digital-Effect Network Co., Ltd. All rights reserved.
アクセス制限してるけどサイトが見れる?


       理由
       デフォルトのページは、/var/www/error/noindex.htmlというファイルです。
       これは、/etc/httpd/conf.d/welcome.conf という設定に従って表示されています。

       [welcome.confの内容]
      <LocationMatch "^/+$">
          Options –Indexes
          ErrorDocument 403 /error/noindex.html
      </LocationMatch>

       この「welcome.conf」は、 conf.dディレクトリ以下にあるので、httpd.confでIncludeされて
       います。

       許可対象外のIPからアクセスがあった場合、このwelcome.confの内容により、
       「/var/www/error/noindex.html」のページへアクセスさせて、デフォルトのページが見える、
       という仕組みになっています。

       (※「/error/」は、「/var/www/error/」のエイリアスになっています。)



2012/12/21                                 - 13 -      Copyright Digital-Effect Network Co., Ltd. All rights reserved.
アクセス制限してるけどサイトが見れる?


       修正
       サイトへのアクセス制限をかけているのに、デフォルトページとはいえ、ブラウザに
       何らかのコンテンツが見えてしまうのは、気持ち悪い。


       対応方法
       簡単な方法は、このnoindex.htmlを削除する、もしくは、welcome.confを削除すれば、
       このデフォルトページは見えなくなります。

       これで、見た目もアクセス制限されているように見えるようになりました。。。




2012/12/21                      - 14 -    Copyright Digital-Effect Network Co., Ltd. All rights reserved.
ご清聴ありがとうございました。




広告スペース
                           設計から運用まで、
                           安全・安心ホスティング
                         単体サーバから複数台構成まで幅広く対応致します。

      勿論、.htaccessの作成~アドバイスまで承ります。
2012/12/21      - 15 -      Copyright Digital-Effect Network Co., Ltd. All rights reserved.

Htaccessで困る

  • 1.
  • 2.
    アジェンダ お話する内容 • 正しい.htaccessなのにサイトが見れない • アクセス制限してるけどサイトが見れる? 2012/12/21 -1- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 3.
    正しい.htaccessなのに・・・ 正しい.htaccessなのにサイトが見れない • 新しく.htaccessファイルを置いてみた。 • 新しい機能を使ってみた。 (ベーシック認証しか使っていなかったが、リダイレクト設定を追加した等) よくありがちなこと。 でもたったこれだけのことだけど、これでサイトが見れなくなってしまいました。 そんな経験ありませんか? 2012/12/21 -2- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 4.
    正しい.htaccessなのに・・・ .htaccessファイルを置くだけで障害! • Apacheインストール • Webコンテンツをアップロード ↓ • 一般公開まで認証をかけておこう(Basic認証) ↓ • .htaccessファイルの書き方をGoogle検索 ↓ • そのままコピペ ↓ • .htaccessファイルを設置 ↓ • 認証がかからない! • エラーメッセージが出る! 2012/12/21 -3- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 5.
    正しい.htaccessなのに・・・ 例:ググって2番目に出てきた「htaccesseditor.com」 というサイトで .htaccessファイルを作成してみた。 2012/12/21 -4- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 6.
    正しい.htaccessなのに・・・ 作成した内容 • ファイル一覧の拒否 – 「する」を選択 (特別な意図がない限り「する」をお勧めします、と書かれていたので。) • ベーシック認証を設定 • インデックスファイルの表示設定 – Index.htm > index.html の順序で参照するよう設定 実際に作成した.htaccessファイルの中身 <Files ~ "^¥.(htaccess|htpasswd)$"> deny from all </Files> Options -Indexes AuthUserFile /var/www/html/.htpasswd AuthGroupFile /dev/null AuthName "Please enter your ID and password" AuthType Basic require valid-user DirectoryIndex index.htm index.html order deny,allow 2012/12/21 -5- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 7.
    正しい.htaccessなのに・・・ 先ほどの.htaccessファイルをサーバにアップ… Internal Server Error がッ! .htaccessは正しいハズ。 でもサイトは表示できない。 ・・・なぜ!? 2012/12/21 -6- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 8.
    正しい.htaccessなのに・・・ 原因は? httpd.conf の設定で.htaccessファイルの設定を許可していない Apacheは、インストール直後のデフォルトの場合、.htaccessの設定が全て禁止されます。 (※yum インストールの場合) Apacheのエラーログにこんなログが出ます。 [Tue Nov 13 16:01:13 2012] [alert] [client 172.16.1.139] /var/www/html/.htaccess: DirectoryIndex not allowed here 「.htaccessでインデックスファイルの読み込み順序を設定(DirectoryIndex)したが、 httpd.confの設定で許可されていない処理の為、エラーが発生した」ということが原因 です。 機能Bはhttpd.confで禁止の設定 機能A httpd.conf 機能C .htaccess 許可 禁止 .htaccessで機能Bを使う設定 機能B 機能D 許可 機能B 禁止 エラー発生! 2012/12/21 -7- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 9.
    正しい.htaccessなのに・・・ 許可するには? .htaccessによる制御を許可するように、httpd.confの設定を修正します。 デフォルトの状態だと以下の内容(<Directory "/var/www/html">) AllowOverride None DirectoryIndexを許可するように設定を変更します。 AllowOverride AuthConfig Indexes Limit Options これでApacheを再起動して、期待どおりに.htaccessが動きます。 2012/12/21 -8- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 10.
    正しい.htaccessなのに・・・ AllowOverrideの設定の意味 AuthConfig 認証に関するディレクティブの使用を許可する。(AuthUserFile, AuthName, AuthType,,requireなど) Indexes ディレクトリインデックスを制御するためのディレクティブの使用を許可する。(DirectoryIndexなど) Limit ホストへのアクセス制御を行うためのディレクティブの使用を許可する。(Allow, Deny, Orderなど) Options 特定のディレクトリにおける機能を指定するためのディレクティブの使用を許可する。 ※上記以外に、FileInfo(ドキュメントタイプを制御するディレクティブ)がある。 Options -Indexes →Optionsの許可が必要 AuthUserFile /var/www/html/.htpasswd AuthGroupFile /dev/null AuthName "Please enter your ID and password“ →AuthConfigの許可が必要 AuthType Basic require valid-user DirectoryIndex index.htm index.html →Indexesの許可が必要 order deny,allow →Limitの許可が必要 2012/12/21 -9- Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 11.
    正しい.htaccessなのに・・・ ここまでのまとめ httpd.confにて、AllowOverrideで許可されていない設定を .htaccessに記載すると、.htaccessをサーバに保存した瞬間に Internal Server errorが発生します。 例えば、以下のような.htaccessの場合、AllowOverrideにOptionsとLimitの許可設定が ないと、Internal Server Errorとなります。 Options -Indexes order deny,allow allow from 192.168.1.5 deny from all httpd.confとの関係を知らないまま、.htaccessを気軽に設置したりすると、思わぬところで サーバエラーが発生するかもしれません。 サーバ管理者や、サーバ管理会社に事前にサーバの仕様を確認しておきましょう。 2012/12/21 - 10 - Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 12.
    アクセス制限してるけどサイトが見れる? アクセス制限したら、Apacheのデフォルトの ページが表示される? 2012/12/21 - 11 - Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 13.
    アクセス制限してるけどサイトが見れる? アクセス制限したら、Apacheのデフォルトのペー ジが表示される。なぜ? Options -Indexes order deny,allow allow from 192.168.1.5 deny from all 先ほどの設定内容の場合、192.168.1.5以外のIPからアクセス(※1)すると、Apahceの デフォルトのページ(↓)が表示されてしまいます。 (※1) http://192.168.1.5/ というようなURLにアクセスした場合に限ります。 http://192.168.1.5/test.html といったURLの場合は、 Forbiddenの表示となります。 アクセス制限してるから、許可して いないIPからのアクセスは全て、 Forbiddenの表示にしたい。 2012/12/21 - 12 - Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 14.
    アクセス制限してるけどサイトが見れる? 理由 デフォルトのページは、/var/www/error/noindex.htmlというファイルです。 これは、/etc/httpd/conf.d/welcome.conf という設定に従って表示されています。 [welcome.confの内容] <LocationMatch "^/+$"> Options –Indexes ErrorDocument 403 /error/noindex.html </LocationMatch> この「welcome.conf」は、 conf.dディレクトリ以下にあるので、httpd.confでIncludeされて います。 許可対象外のIPからアクセスがあった場合、このwelcome.confの内容により、 「/var/www/error/noindex.html」のページへアクセスさせて、デフォルトのページが見える、 という仕組みになっています。 (※「/error/」は、「/var/www/error/」のエイリアスになっています。) 2012/12/21 - 13 - Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 15.
    アクセス制限してるけどサイトが見れる? 修正 サイトへのアクセス制限をかけているのに、デフォルトページとはいえ、ブラウザに 何らかのコンテンツが見えてしまうのは、気持ち悪い。 対応方法 簡単な方法は、このnoindex.htmlを削除する、もしくは、welcome.confを削除すれば、 このデフォルトページは見えなくなります。 これで、見た目もアクセス制限されているように見えるようになりました。。。 2012/12/21 - 14 - Copyright Digital-Effect Network Co., Ltd. All rights reserved.
  • 16.
    ご清聴ありがとうございました。 広告スペース 設計から運用まで、 安全・安心ホスティング 単体サーバから複数台構成まで幅広く対応致します。 勿論、.htaccessの作成~アドバイスまで承ります。 2012/12/21 - 15 - Copyright Digital-Effect Network Co., Ltd. All rights reserved.