11 votes

Comment enregistrer le schéma URL (http / https) dans Apache ?

Nginx a la variable $scheme utilisable dans ses lignes de log_format.

%H est le protocole de la requête (par exemple "HTTP/1.1").

Comment puis-je faire la même chose avec Apache ?

7voto

Bongo Sharp Points 1414

Cela fonctionne pour moi avec Apache 2.4.23:

LogFormat "%{REQUEST_SCHEME}x ..." my_log_format

%{varname}x est disponible uniquement lorsque mod_ssl est chargé, voir: https://httpd.apache.org/docs/trunk/mod/mod_ssl.html#logformats

3voto

Vladimir Panteleev Points 1695

Une manière de le faire est d'avoir deux directives conditionnelles CustomLog, contrôlées par la variable HTTPS est définie.

CustomLog logs/access.log "https://..." env=HTTPS
CustomLog logs/access.log "http://..." env=!HTTPS

J'ai également essayé d'utiliser SetEnvIf de la manière suivante, mais cela ne fonctionne pas (il enregistre -):

SetEnv URL_SCHEME=http
SetEnvIf HTTPS on URL_SCHEME=https
CustomLog logs/access.log "%{URL_SCHEME}e://..."

3voto

bstokes Points 31

Par inexplicable raison, je n'ai pas pu faire fonctionner les exemples ci-dessus, donc j'ai trouvé une autre solution : vous pouvez ajouter 2 règles de réécriture dans votre configuration comme suit :

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [E=SCHEME:HTTP]

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [E=SCHEME:HTTPS]

Ensuite, ajoutez ceci à votre définition de LogFormat.

scheme=\"%{SCHEME}e\"

3voto

Abhishek Ghosh Points 101

Comme le schéma d'URL n'est pas directement disponible dans le format de journal Apache, vous pouvez enregistrer le port canonique (par exemple 80/443) du serveur qui traite la requête en utilisant %p comme alternative :

CustomLog access.log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" port:%p"

-2voto

Chris Points 1135

Définissez votre sortie de journal et ajoutez %H. Cela vaut également pour Apache.

Donc, vous créez un LogFormat comme ceci et à ma connaissance, il en existe quelques-uns définis dans la configuration par défaut d'Apache.

LogFormat "%h %l %u %t \"%r\" %>s %b" common

et ajoutez le nom du LogFormat (dans ce cas "common") à la fin de votre appel de fichier journal

CustomLog logs/access_log common

Jetez un œil ici pour plus d'informations sur le journal et ici sur les différentes chaînes de format.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X