Apache HTTP Server のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Apache HTTP Server へ行く。
- 1 (2021-11-14 (日) 12:01:48)
- 2 (2022-03-27 (日) 18:25:53)
- 3 (2022-03-27 (日) 21:02:33)
Apache HTTP Server とは †
種類 †
- APR(Apache Portable Runtime)
- MPM(Multi Processing Module)
APR †
MPM †
- MPM(Multi-Processing Module)
prefork | マルチプロセス、マルチスレッド |
worker | ハイブリッド。PHPを使う場合はこちらが推奨。大規模サイト向き |
event | マルチスレッド |
モジュール †
標準モジュール †
モジュール名 | 説明 |
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 | 一般ユーザーのコンテンツ・ディレクトリの設定 |
アクセス制御(ホスト制限) †
- mod_access
- アクセス元のIPアドレス、ホスト名、ドメイン名などにより、アクセスの許可/拒否を判断する
アクセス制限(ユーザ認証) †
- mod_auth
- ID/パスワードの入力を促す。Basic認証、Digest認証。
DSO(Dynamic Shared Object) †
- mod_so
- DSOモジュールを読み込む。Apacheをコンパイルし直さずにモジュールの変更を行う。
拡張モジュール †
プロキシ関連機能 †
mod_proxy | プロキシ機能 |
mod_proxy_balancer | ロードバランサ機能 |
mod_proxy_http | |
mod_proxy_connect | HTTPSのCONNECTメソッドをサポートする機能 |
プロキシ関連機能(Tomcat連携) †
キャッシュ機能(サーバサイドキャッシング) †
mod_cache | キャッシュ機能を使う場合は有効にする |
mod_disk_cache | キャッシュデータをディスクに保存 |
mod_mem_cache | キャッシュデータをメモリに保存 |
mod_headers | HTTPリクエストヘッダによるキャッシング制御を使う |
キープアライブ機能 †
サードパーティーのモジュール †
アクセス制御(認証) †
- mon_auth_tkt
- mod_auth_ntlm_winbind
Apacheの構造 †
- 外部ライブラリ
- モジュール
- CORE
- OS
Apacheのリクエストトランザクション †
- リクエスト受信後
- URI変換
- ヘッダの解析
- アクセス制御
- 認証
- アクセス許可
- MIMEタイプチェック
- 微調整
- 応答
- ロギング
- 後処理
インストール †
Debian †
apt install apache2
Red Hat †
yum install httpd
ツール †
apachectl †
- Apache の設定ファイルの構文チェック
apachectl configtest
- Apache の再起動
apachectl restart
httpd †
- バージョンの表示
httpd -version httpd -V
- モジュールを表示
httpd -M
サイトの操作 †
a2ensite †
- 有効化
a2ensite <site-name>.conf
a2dissite †
- 無効化
a2dissite <site-name>.conf
モジュールの操作 †
a2enmod †
- 有効化
a2enmod <module-name>
a2dismod †
- 無効化
a2dismod <module-name>
設定 †
メインの設定ファイル †
- /etc/httpd/conf/httpd.conf
- /etc/apache2/apache2.conf
- ServerRoot
- DirectorySlash
- DirectoryIndex
- ルート(/)を指定して表示するファイルを指定する。
- 複数ファイルの指定が可能。
- Directory
Apache がリッスンするポートの設定 †
- /etc/apache2/ports.conf
仮想ホストの設定 †
- /etc/apache2/sites-available/
- /etc/apache2/sites-enabled/
仮想ホスト以外の設定 †
- /etc/apache2/conf-available/
- /etc/apache2/conf-conf-enabled/
モジュールの設定 †
- /etc/apache2/mods-available/
- /etc/apache2/mods-enabled/
ログ †
- /var/log/apache2/access.log
- /var/log/apache2/error.log
- /var/log/apache2/<hostname>_access.log
- /var/log/apache2/<hostname>_error.log
セッション情報の維持 †
スティッキーセッション方式 †
- セッション変数を永続的に利用する
- クライアント側がCookieを使わない場合、携帯端末によってはURL RewritingによりセッションIDをURLに記載する。これに対するサーバ側の対応として、URLに含まれるセッションIDを取得する。
チューニング †
MaxClients値の求め方 †
- MaxClients = 実メモリ / httpdのプロセスサイズ
- プロセスのサイズを小さくするために不要なモジュールを無効にする
- 動的コンテンツと静的コンテンツを別々のhttpdで処理する
- mod_proxyを使ってApacheをPROXYとして動作させ、別httpdのコンテンツを同一サーバのコンテンツのように見せる
セキュリティ対策 †
- HTTPリスポンスヘッダのバージョン情報を隠蔽する
- エラーページ等のデフォルトコンテンツを置き換える
- HTTPSで通信するデータを暗号化する。