Apacheスクラップ

httpdのログ
ログの種類
access_log
error_log
ssl_access_log
ssl_error_log
ssl_request_log
access_logの見方
12.23.34.56 - - [24/Jul/2022:00:38:19 +0000] "POST /xmlrpc.php HTTP/1.1" 200 439
①リモートホストのIPアドレス
②リモートログ名
※リモートログ名は通常ハイフン(-)になってしまう。
③リモートユーザー名
※リモートユーザー名もハイフン(-)になってしまう。
④リクエスト受信日時
⑤リクエスト内容
※リクエスト内容の最初の行が表示される。メソッド名とファイル名。
⑥ステータスコード
⑦レスポンス本文のバイト数

フォルダ構成
bin
cgi-bin
conf
error
htdocs
icons
include
lib
logs
modules
本体の場所
/usr/sbin/httpd
デーモンの場所
/usr/lib/systemd/system/httpd.service
設定ファイルの場所
RHEL系
/etc/httpd/conf/httpd.conf
Debian系
/etc/apache2/apache2.conf
httpd-dav.conf
conf/extraの中にある
モジュールの場所(例:proxy_module)
RHEL系
modules/mod_proxy.so
Debian系
mods-available/proxy.load
ApacheHausのフォルダ構成
Apache24・・・Apacheフォルダ
readme_first.html・・・ここにバージョンの記載あり
ライセンス情報
LICENSE.txt・・・Apache本体のライセンスの説明
Licenses.txt・・・Apacheに使われているサードパーティのライセンスの説明

コマンド
httpdとapachctlとsystemctlの違い
・apachectlはhttpdのラッパーであり、より分かりやすく使いやすいインターフェースを提供している。
・スクリプトを通じて裏でhttpdをたたいているので若干のオーバーヘッドはあるが、速度差はほぼ皆無(10msecくらい?)。
・apachectlもhttpdもいずれもApacheサーバーのプロセスに直接働きかけるコマンドである。
・一方systemctlはsystemdを通じて間接的に働きかけるコマンドである。
・systemctlではgracefulな停止はできないので注意。
バージョン関連
httpd -V
または
apachectl -V
バージョンだけでなく、アーキテクチャのビット数、MPMの方式、コンパイル時に使用したオプションなどが分かる。
デーモン(サービス)関連
サービス開始:httpd -k start
サービス再起動:httpd -k restart
サービス停止:httpd -k shutdown
以下はWindowsのみ
サービス登録:httpd -k install
サービス削除:httpd -k uninstall
※サービス化せず、cmd立ち上げてhttpd実行で起動できるが、cmdの画面閉じたらhttpdも終了してしまう。
モジュール関連
静的モジュールの確認方法
httpd -l
※モジュール名ではなく、ファイル名で表示されるので注意!
※ただし、静的モジュールなので、ビルド時にバイナリに組み込まれているため、ファイルとしてどこかに存在しているわけではない。
動的モジュールの確認方法
httpd -M
※このオプションでは動的静的すべてが表示される。staticと表示されているものが静的で、sharedと表示されているものが動的。
※ファイル名ではなく、モジュール名(モジュール識別名、モジュールごとに識別名というものが一意に決まっている)で表示されるので注意!
または、httpd.conf内のLoadModuleを確認する。
モジュール一覧からMPMの方式を知ることもできる。
その他
バーチャルホストの設定確認
httpd -S

エラーメッセージ
エラーログ内のタイムスタンプは普通UTCになっている?
AH01102: error reading status line from remote server 12.34.56.78
クライアントには502エラー(Bad Gateway)が返る。
AH01095: prefetch request body failed to 12.34.56.78
クライアントには400エラー(Bad Request)が返る。
AH01618: user ユーザー名 not found
BASIC認証のエラー。存在しないユーザー名を指定した可能性大。
AH00957: HTTP: attempt to connect to 12.34.56.78 (ホスト名:ポート番号) failed
接続先(転送先)のサーバーがリッスンしてないか、ダウンしていることを意味する。高負荷でさばき切れていないか、拒絶している可能性がある。
ここでの接続はTCPレベルで確立できなかったことを意味する。
AH01114: HTTP: failed to make connection to backend: hoge.jp
HTTP接続を確立できなかったことを意味する。ふつうAH00957とセットで吐かれる。
(70007)The timeout specified has expired
文字通り、タイムアウトを引き起こしたことを意味する。