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 ?
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 ?
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
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://..."
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\"
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"
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.
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.