#author("2021-10-13T03:30:39+09:00","default:ham","ham") #amazon(4774142239) #contents #adsense(728x90) #br * リンク [#p2013852] - The Apache HTTP Server Project -- http://httpd.apache.org/ - ディレクティブ クイックリファレンス - Apache HTTP サーバ -- http://httpd.apache.org/docs/2.2/ja/mod/quickreference.html - JAPAN APACHE USERS GROUP -- http://www.apache.jp/ * インストール [#fe867dd0] Apache 2.0.54 + OpenSSL 0.9.8の場合 % patch -p1 < ../httpd-2.0.54-openssl-0.9.8.patch % ./configure \ --prefix=/usr/local/apache2 \ --sysconfdir=/etc/httpd \ --enable-ssl \ --enable-dav \ --enable-so \ --disable-userdir \ --with-ssl=/usr/local/openssl % make # make install |オプション|説明|h |--prefix=<dir>|インストールパス| |--sysconfdir=<dir>|設定ファイルパス| |--enable-ssl|SSL対応| |--enable-dav|WebDAV対応| |--enable-so|DSO(Dynamic Shared Object)対応| |--disable-userdir|UserDir非対応| |--with-ssl=<dir>|OpenSSLインストールパス| * 設定 [#f42d08fc] ** 共通設定 [#ic8f3efb] *** Listen ['''ip-addr''':]'''port''' [#c168a6fc] - Listenするポートを設定する - 2.0からは必須 - 複数のポートを利用する #pre(soft){{ Listen 80 Listen 8080 }} - 特定のI/Fに限定する #pre(soft){{ Listen 192.168.0.1:80 }} *** User, Group [#fd9e5737] - 子プロセスのユーザー、グループを設定する #pre(soft){{ User www Group }} *** ServerName HOST:PORT [#rda6d475] - ホスト名の設定 - リダイレクトする場合に利用される #pre(soft){{ ServerName www.yamikuro.com }} *** UseCanonicalName On|Off|Dns [#b1e91e91] *** DocumentRoot PATH [#g119337b] *** HostnameLookups On|Off [#e3086ad5] *** TimeOut [#k6e20d30] - 各リクエストのタイムアウト時間 #pre(soft){{ TimeOut '''time''' }} -- '''time''' --- デフォルト 300 秒 *** KeepAliveTimeout [#he0593f0] - HTTP 1.1 の持続的接続のタイムアウト時間 #pre(soft){{ KeepAliveTimeout '''time''' }} -- '''time''' --- デフォルト 15 秒 --- 長すぎると無駄にリソースを消費する *** MaxKeepAliveRequests [#t60eb68b] - HTTP 1.1 の持続的接続で 1 セッションで受け付けるリクエスト数 #pre(soft){{ MaxKeepAliveRequests '''num''' }} -- '''num''' --- デフォルト 100 --- 多すぎると他のリクエストが割り込む余地がなくなる ** 対象の指定 [#m97795e3] *** <Directory '''path'''> [#d7882739] - ディレクトリに対する設定を行う #pre(soft){{ <Directory '''path'''> 設定 </Directory> }} - ディレクトリの指定には、ワイルドカード/正規表現が利用可能 #pre(soft){{ <Directory /var/www/*> <Directory ~ "^/var/www/.*"> }} *** <Files '''path/file'''> [#p9276b24] - ファイルに対する設定を行う #pre(soft){{ <Files '''path/file'''> 設定 </Files> }} - ファイルの指定には、ワイルドカード/正規表現が利用可能 *** <Location '''path'''> [#tabb1395] - URL のリソースに対する設定を行う - http://www.yamikuro.com/foobar なら下記のようになる #pre(soft){{ <Location '''path'''> 設定 </Location> }} - リソースの指定には、ワイルドカード/正規表現が利用可能 ** 設定 [#ob46c83a] *** Options [#bf65f969] - Directoryの配下に記述 |値|説明|h |All|MultiViews以外を全て許可する(デフォルト)| |ExecCGI|CGIスクリプトの実行を許可する| |FollowSymLinks|シンボリックリンクを辿れる様にする| |Includes|SSIを許可する| |Indexes|DirectoryIndexで指定したファイルがない場合に、ファイルインデックスを出力する| *** AllowOverride [#tafc9147] |値|説明|h |All|.htaccessを許可する(デフォルト)| |AuthConfig|認証に関する設定のみ許可する| |None|.htaccessを許可しない| *** Order [#s5273364] |値|説明|h |Deny,Allow|Deny→Allowの順に評価する(デフォルトで許可)| |Allow,Deny|Allow→Denyの順に評価する(デフォルトで拒否)| 特定のアクセスを拒否する #pre(soft){{ <Directory '''path'''> Order Deny,Allow Allow from 192.168.0.101 </Directory> }} 特定のアクセスを許可する #pre(soft){{ <Directory '''path'''> Order Allow,Deny Allow from 192.168.0.0/24 </Directory> }} ** VirtualHostの設定 [#o53019c3] *** NameVirtualHost [#o8a4a8c3] *** <VirtualHost > [#u729287f] ** SSLの設定 [#k343f0e4] *** 秘密鍵(RSA PRIVATE KEY)を作成 [#a7bb6ec5] - server.key を作る #pre(soft){{ # cd /etc/httpd/ssl.key # openssl genrsa -des3 -out server.key 1024 Generating RSA private key, 1024 bit long modulus ..............++++++ .......................++++++ e is 65537 (0x10001) Enter pass phrase for server.key: '''passwd'''&ref(images/enter.png,around,nolink); Verifying - Enter pass phrase for server.key: '''passwd'''&ref(images/enter.png,around,nolink); }} *** 秘密鍵の暗号化を解除 [#b84b2e00] #pre(soft){{ # openssl rsa -in server.key -out server.key Enter pass phrase for server.key: '''passwd'''&ref(images/enter.png,around,nolink); writing RSA key }} *** CSR(CERTIFICATE REQUEST)を作成 [#i621b30c] - server.csr を作る #pre(soft){{ # openssl req -new -days 365 -key server.key -out server.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Tokyo Locality Name (eg, city) []:Suginami Organization Name (eg, company) [Internet Widgits Pty Ltd]:Number Nine Dream Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:www.6996.jp Email Address []:number9<atmark>dream.plala.or.jp Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: }} *** 自己証明書(CERTIFICATE)を作成 [#ca3d2784] #pre(soft){{ # openssl x509 -req -days 365 -in server.csr -out ../ssl.crt/server.crt \ -signkey server.key&ref(images/enter.png,around,nolink); Signature ok subject=/C=JP/ST=Tokyo/L=Suginami/O=Number Nine Dream/CN=www.6996.jp/emailAddres s=number9<atmark>dream.plala.or.jp Getting Private key }} ** ログ [#u9b82847] *** LogFormat [#x11864c7] - ログ フォーマットの定義 #pre(soft){{ LogFormat '''format''' ['''name'''] }} |フォーマット|意味|説明|h |%h|host|リモート ホスト| |%l||| |%v|virtualhost|リクエストを受けた ServerName| |%u|user|ユーザ名| |%t|time|リクエストを受けた時刻| |%T|time|リクエストを返すのにかかった処理時間 (sec)| |%D||リクエストを返すのにかかった処理時間 (micro sec)| |%r|request|リクエストの最初の行| |%s|status|レスポンス コード (リダイレクトされた場合は、リダイレクト前)| |%>s|status|レスポンス コード (リダイレクトされた場合は、リダイレクト後)| |%b|byte|レスポンスのサイズ (byte)| |%{'''header'''}i||ヘッダーの内容 (Referer、User-Agent など)| *** TransferLog [#w77dffaf] - ログ ファイル名の指定 #pre(soft){{ TransferLog '''file''' }} -- 書式は直接指定でない -- 直前の名前を指定されていない LogFormat に従う *** CustomLog [#xa20850e] - ログ ファイル名の指定 #pre(soft){{ CustomLog '''file name''' }} -- LogFormat の名前で書式を指定する - ログ ファイル名の指定 #pre(soft){{ CustomLog '''file format''' }} -- 書式を直接指定する