#author("2020-04-12T03:37:01+00:00","default:wikiadmin","wikiadmin")
#author("2020-05-12T19:42:05+09:00","default:wikiadmin","wikiadmin")
-Apacheのhttpd.confを中心とした設定関連ページ

#contents

*設定ファイル [#k6b92b69]

**各ファイル [#te3cd18b]

|httpd.conf|設定の中心となるファイル。小さいサイトであればこのファイルだけに完結させた方が楽|
|magic|拡張子以外によるMIMEタイプの設定をするファイル|

*2.4以降のアクセス制限 [#u410a83e]

**特定ホスト or IPだけ [#o661e126]

            Require all denied
            # from xxx.hogehoge.ne.jp
            Require host .hogehoge.ne.jp
            # IP
            Require ip xxx.xxx.xxx.xxx


*Apacheモジュール [#p01c6594]

**mod_rewrite [#h6182b04]

サーバー移転などのURLリダイレクトや動的ページをHTMLに見せるなどの用途で使われる。

-まずは簡単なサンプル。from/ディレクトリ以下に来たアクセスをto/ディレクトリの同じファイルにリダイレクトする。R=301は移転先のURLをアドレスバーに表示させるためのもの。移転先を隠したい場合は除去する。

 RewriteEngine on
 RewriteRule ^from/(.+)$ to/$1 [R=301,L]


-多少複雑なもの

 RewriteEngine on
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule book([0-9a-zA-Z_\-]+).html$ http://sample.com /test/index.php?bookid=$1 [L]

***参考サイト [#d1c4dca7]

http://blog.dawgsdk.org/weblog/archives/411011

*Tomcatとの連携 [#zf5fb12c]

-TomcatとAJPプロトコルで連携(Apache2.2から)

 #By TF
 LoadModule proxy_module modules/mod_proxy.so
 LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
 <Location /任意の名前/>
   ProxyPass /jenkins ajp://サーバーのIP:8009/コンテキスト名/
   # 302の時に必要。
   ProxyPassReverse /jenkins ajp://サーバーのIP:8009/コンテキスト名/
 </Location>


*認証 [#b74d01d9]

**.htaccessを使う場合のパフォーマンス上の留意点 [#a92e2aa8]

AllowOverride AuthConfigとすると毎回.htaccessファイルを探しにいくので利用しない場合はNoneにしておく

**BASIC認証 [#cd35f758]

-.htaccessを利用しないで<Directory>に記述するやり方

 <Directory "制限したいディレクトリ">
       AuthUserFile conf/.htpasswd
       AuthName "hogehoge"
       AuthType Basic
       require valid-user
 </Directory>


-各ディレクトリに.htaccessによる認証を許す設定

 <Direcotry>
    AllowOverride AuthConfig
 </Directory>

-.htaccess(相対パス指定も可能)

 AuthUserFile conf/.htpasswd
 AuthGroupFile /dev/null
 AuthName "Please enter your ID and password"
 AuthType Basic
 require valid-user

-.htpasswdの作成

/usr/local/apache2/bin/htpasswd  -c .htpasswd USER


**Digest認証 [#kfe233ce]

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/699apachedigest.html

このページのとおりにやったら一部情報が古くてはまった。

 Invalid command 'AuthDigestFile', perhaps misspelled or defined by a module not included in the server configuration

AuthDigestFileというのはBASIC認証と同じAuthUserFileに統一されたようだ。

***httpd.confへの設定 [#u79aad3b]

 <Directory "/var/www/html/">
    AuthType Digest
    AuthName "Secret Zone"
    AuthDigestDomain /personal/
    AuthUserFile /etc/httpd/conf/.htdigest
    Require user secret
 </Directory>


AuthNameは単なるダイアログ表示だけの存在ではなく、次のユーザ作成の時に一致させる必要があるので注意。

***パスワードファイルの作成 [#m9a4480b]

-secretユーザでSecretZoneに対して作成

 htdigest -c /etc/httpd/conf/.htdigest 'Secret Zone' secret

-既存のファイルに追加する場合は-cをはずすこと

**各設定の優先順位 [#yefa1baf]

-Directory(.htaccess),File,Locationの順で後ろによって上書きされる。

http://hegel.aichi-u.ac.jp/manual/sections.html

**特定のネットワークからは認証させない [#fa011e63]

公式サイトより引用

-例えば、同じネットワーク上にいる人にはウェブサイトのある部分について 無制限のアクセスを許したいけれど、外のネットワークの人には パスワードを提供させるようにするためには、次のような設定をすることが できます:

 Require valid-user
 Allow from 192.168.1
 Satisfy Any 

 <Directory "/vaw/www/html/staffonly">
     Order allow,deny
     Allow from all
     Deny from 192.168.1.0/24
 
     AuthType Basic
     AuthName "INPUT YOUR ID AND PASSWORD"
     AuthUserFile "conf/.htpasswd"
     Require valid-user
     Satisfy any
 </Directory>


*トラブルシューティング [#cece2dc1]

**403が出る時 [#ybea6334]

拡張子制限などの時

 [Sun Apr 12 12:35:34.194759 2020] [access_compat:error] [pid 14267] [client 162.158.118.47:41326] AH01797: client denied by server configuration: /var/www/vhosts/blog/wp-config.php


#counter

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS