nginx memiliki $scheme
variabel yang dapat digunakan dalam log_format
barisnya.
%H
adalah protokol permintaan (mis. "HTTP / 1.1").
Bagaimana saya bisa melakukan hal yang sama dengan Apache?
apache-2.2
logging
Vladimir Panteleev
sumber
sumber
mod_env
usaha Anda mungkin gagal karena kesalahan sintaksis .SetEnv
mengambil variabel dan nilai tanpa tanda sama:SetEnv URL_SCHEME http
.SetEnvIf
baris tidak bekerja pada apache <2.4.1 karenamod_setenvif
tampaknya tidak memiliki akses ke lingkungan ssl . hampir membuatku gila pada 2.2.22.mod_ssl
hanya menetapkan variabel lingkungan jika Anda secara eksplisit menyuruhnya melakukannya viaSSLOptions
.Untuk beberapa alasan saya tidak bisa mendapatkan contoh di atas untuk bekerja, jadi temukan cara lain: Anda dapat menambahkan 2 aturan penulisan ulang ke dalam konfigurasi Anda sebagai berikut:
Kemudian tambahkan ini ke dalam definisi LogFormat Anda.
sumber
Karena skema url tidak tersedia secara langsung dalam format log apache, Anda dapat mencatat port kanonik (mis. 80/443) dari server yang melayani permintaan dengan menggunakan% p sebagai alternatif:
sumber
Ini berfungsi untuk saya dengan Apache 2.4.23:
%{varname}x
hanya tersedia ketika mod_ssl dimuat, lihat: https://httpd.apache.org/docs/trunk/mod/mod_ssl.html#logformatssumber
Tentukan output log Anda dan tambahkan% H ke sana. Ini sama untuk Apache.
Jadi, Anda membangun
LogFormat
seperti ini dan afaik ada pasangan yang ditentukan dalam konfigurasi apache default.dan tambahkan nama LogFormat (dalam hal ini "umum") ke akhir panggilan logfile Anda
Lihat di sini untuk informasi lebih lanjut tentang log dan di sini tentang string format yang berbeda.
sumber
%H
tidak melakukan apa yang saya butuhkan.