#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