nginxは、$schemeそのlog_format行で使用可能な変数を持っています。
%H 要求プロトコルです(例: "HTTP / 1.1")。
Apacheでどうすれば同じことができますか?
nginxは、$schemeそのlog_format行で使用可能な変数を持っています。
%H 要求プロトコルです(例: "HTTP / 1.1")。
Apacheでどうすれば同じことができますか?
回答:
これを行う1つの方法はCustomLog、HTTPS変数が設定されているかどうかによって制御される2つの条件付きディレクティブを持つことです。
CustomLog logs/access.log "https://..." env=HTTPS
CustomLog logs/access.log "http://..." env=!HTTPS
私はまたSetEnvIf、次の方法で使用しようとしましたが、機能しません(ログに記録されます-)。
SetEnv URL_SCHEME=http
SetEnvIf HTTPS on URL_SCHEME=https
CustomLog logs/access.log "%{URL_SCHEME}e://..."
mod_sslを介して明示的に指定する場合にのみ、環境変数を設定しますSSLOptions。
                    URLスキームはapacheログ形式では直接利用できないため、代わりに%pを使用して、リクエストを処理するサーバーの正規ポート(80/443など)をログに記録できます。
CustomLog access.log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" port:%p"
これは、Apache 2.4.23で動作します。
LogFormat "%{REQUEST_SCHEME}x ..." my_log_format
%{varname}xmod_sslがロードされている場合にのみ使用できます。https://httpd.apache.org/docs/trunk/mod/mod_ssl.html#logformatsを参照してください。
ログ出力を定義し、それに%Hを追加します。これはApacheでも同じです。
したがって、あなたはLogFormatこのようなものを構築し、デフォルトのApache構成で定義されたカップルがあります
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormatの名前(この場合は「common」)をログファイル呼び出しの最後に追加します
CustomLog logs/access_log common
%H必要なことをしないと述べました。
                    
mod_envために作業が失敗した可能性があります。SetEnv変数と値を等号なしで取得します:SetEnv URL_SCHEME http。