Apache HTTP Server のバックアップ差分(No.3)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#author("2022-03-27T18:25:53+09:00","default:k1rou","k1rou")
#author("2022-03-27T21:02:33+09:00","default:k1rou","k1rou")
*Apache HTTP Server とは [#m6585f10]
-https://httpd.apache.org/
-単に「[[Apache]]」と呼ばれる。
-Apache Software Foundation が提供する[[OSS]]の[[Webサーバ]]
-httpd
-クライアント1万台問題

*種類 [#zc62c4ae]
-APR(Apache Portable Runtime)
-MPM(Multi Processing Module)

**APR [#i4e55d89]
-Apache Portable Runtime

**MPM [#s2e74e02]
-MPM(Multi-Processing Module)
-Multi-Processing Module

|prefork |マルチプロセス、マルチスレッド |
|worker  |ハイブリッド。PHPを使う場合はこちらが推奨。大規模サイト向き |
|event   |マルチスレッド |

*モジュール [#acb1e0e9]
**標準モジュール [#p5fff89e]
|モジュール名| 説明|h
|mod_http    |HTTPプロトコルの処理 |
|mod_actions |リクエストされたファイルの形式やHTTPメソッドに連動したCGIプログラムの実行 |
|mod_alias   |URLとディレクトリの対応関係の設定 |
|mod_asis    |HTTPヘッダの追加 |
|mod_autoindex |ディレクトリの一覧を作成 |
|mod_cgi(mod_cgid) |CGIプログラムの実行(スレッド非対応のMPMを選択した場合はmod_cgi、スレッド対応のMPMを選択した場合はmod_cgidが組み込まれる) |
|mod_deflate |データ圧縮転送 |
|mod_dir     |ディレクトリ名で終わるURLに標準のインデックス・ファイル名を補完 |
|mod_env     |CGIプログラムへの環境変数の提供 |
|mod_imap    |イメージ・マップ・ファイルのサポート |
|mod_include |SSIの処理 |
|mod_log_config |アクセスログ取得。ログの書式設定 |
|mod_mime    |拡張子を使用したコンテンツ・タイプの判定 |
|mod_negotiation |クライアントの情報に基づくコンテンツの自動選択 |
|mod_status  |Apacheの稼働状態の監視 |
|mod_setenvif |クライアントの情報に基づく環境変数の設定 |
|mod_userdir |一般ユーザーのコンテンツ・ディレクトリの設定 |

***アクセス制御(ホスト制限) [#mbc6a38b]
-mod_access
--アクセス元のIPアドレス、ホスト名、ドメイン名などにより、アクセスの許可/拒否を判断する

***アクセス制限(ユーザ[[認証]]) [#g927a89b]
-mod_auth
--ID/パスワードの入力を促す。Basic認証、Digest認証。

***DSO(Dynamic Shared Object) [#wc270ef8]
-mod_so
--DSOモジュールを読み込む。Apacheをコンパイルし直さずにモジュールの変更を行う。

**拡張モジュール [#pce851cf]
***[[プロキシ]]関連機能 [#id85e2e3]
|mod_proxy          |プロキシ機能 |
|mod_proxy_balancer |[[ロードバランサ]]機能 |
|mod_proxy_http     | |
|mod_proxy_connect  |HTTPSのCONNECTメソッドをサポートする機能 |

***[[プロキシ]]関連機能([[Tomcat]]連携) [#nd57c152]
|mod_jk        |[[Tomcat]]とのJK連携 |
|mod_proxy_ajp |[[Tomcat]]とのAJP13通信機能 |
|mod_jk2       |[[Tomcat]]とのJK2連携。廃止? |

***[[キャッシュ]]機能(サーバサイドキャッシング) [#i62b8eaa]
|mod_cache      |キャッシュ機能を使う場合は有効にする |
|mod_disk_cache |キャッシュデータをディスクに保存 |
|mod_mem_cache  |キャッシュデータをメモリに保存 |
|mod_headers    |HTTPリクエストヘッダによるキャッシング制御を使う |

***キープアライブ機能 [#o75019a0]
-KeepAlive
-MaxKeepAliveRequest
-KeepAliveTimeout

**サードパーティーのモジュール [#f89e63b0]
***アクセス制御(認証) [#q02be05c]
-mon_auth_tkt
-mod_auth_ntlm_winbind

*Apacheの構造 [#v1ea0360]
-外部ライブラリ
-モジュール
-CORE
-OS

*Apacheのリクエストトランザクション [#z83c0fd1]
+リクエスト受信後 
+URI変換
+ヘッダの解析
+アクセス制御
+認証
+アクセス許可
+MIMEタイプチェック
+微調整
+応答
+ロギング
+後処理

*インストール [#ff7502b4]
**Debian [#y793dba9]
 apt install apache2

**Red Hat [#ze4fddb7]
 yum install httpd

*ツール [#h567bac5]
**apachectl [#b1ca4207]
-Apache の設定ファイルの構文チェック
 apachectl configtest
-Apache の再起動
 apachectl restart

**httpd [#b17827ff]
-バージョンの表示
 httpd -version
 httpd -V

-モジュールを表示
 httpd -M

**サイトの操作 [#m6be13c9]
***a2ensite [#s2b2a274]
-有効化
 a2ensite <site-name>.conf
***a2dissite [#c0321ff1]
-無効化
 a2dissite <site-name>.conf

**モジュールの操作 [#ve849799]
***a2enmod [#c24186f0]
-有効化
 a2enmod <module-name>
***a2dismod [#o9bb24d5]
-無効化
 a2dismod <module-name>

*設定 [#z0de5e4c]
**メインの設定ファイル [#r669e3b2]
-/etc/httpd/conf/httpd.conf
-/etc/apache2/apache2.conf

-ServerRoot
-DirectorySlash
-DirectoryIndex
--ルート(/)を指定して表示するファイルを指定する。
--複数ファイルの指定が可能。
|ServerRoot | Apache サーバのルートディレクトリ |
|ServerTokens | HTTPレスポンスヘッダのサーバ情報(Server:)|
|ServerSignature | エラーメッセージなどに表示されるサーバ情報|
|TraceEnable | Traceメソッドの有効化|
|DirectorySlash | |
|DirectoryIndex | ルート(/)を指定して表示するファイルを指定する。複数ファイルの指定が可能。 |
|Directory | |

-Directory

**Apache がリッスンするポートの設定 [#c9ab70a0]
-/etc/apache2/ports.conf

**仮想ホストの設定 [#p550373f]
-/etc/apache2/sites-available/
-/etc/apache2/sites-enabled/

**仮想ホスト以外の設定 [#tb4dbe2b]
-/etc/apache2/conf-available/
-/etc/apache2/conf-conf-enabled/

**モジュールの設定 [#k990f22f]
-/etc/apache2/mods-available/
-/etc/apache2/mods-enabled/

*ログ [#gfff2ffd]
-/var/log/apache2/access.log
-/var/log/apache2/error.log

-/var/log/apache2/<hostname>_access.log
-/var/log/apache2/<hostname>_error.log

*[[セッション]]情報の維持 [#dc309640]
**スティッキーセッション方式 [#l777cf53]
-セッション変数を永続的に利用する
-クライアント側が[[Cookie]]を使わない場合、携帯端末によってはURL RewritingによりセッションIDを[[URL]]に記載する。これに対するサーバ側の対応として、[[URL]]に含まれるセッションIDを取得する。

*チューニング [#wbaf4d73]
**MaxClients値の求め方 [#m0a461aa]
-MaxClients = 実メモリ / httpdのプロセスサイズ
--プロセスのサイズを小さくするために不要なモジュールを無効にする
--動的コンテンツと静的コンテンツを別々のhttpdで処理する
--mod_proxyを使ってApacheをPROXYとして動作させ、別httpdのコンテンツを同一サーバのコンテンツのように見せる

*セキュリティ対策 [#r170e016]
-HTTPリスポンスヘッダのバージョン情報を隠蔽する
-エラーページ等のデフォルトコンテンツを置き換える
-HTTPSで通信するデータを暗号化する。

*関連用語 [#z579d205]
-[[Tomcat]]
-[[Keep-Alive]]
-[[nginx]]