Как написать условный оператор CustomLog для моего Apache 2.4 VirtualHost? - PullRequest
0 голосов
/ 06 января 2020

Я использую следующую версию Apache (2.4) ...

$ sudo apachectl -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Apr 24 2019 13:45:48

Я хочу написать собственные директивы журнала в моем блоке виртуального хоста, чтобы заголовки хоста соответствовали моему домену go в один журнал, а все остальные go в другой журнал ...

<VirtualHost *:80>
    ServerName mydomain.com

    # Use the Host header to determine where to log
    # Use the Host header to determine how to respond. 
    CustomLog /var/log/httpd/access_log "%h %l %u %t \"%r\" %>s %b" expr="%{HTTP_HOST} == 'mydomain.com'"
    CustomLog /var/log/httpd/garbage_access_log "%h %l %u %t \"%r\" %>s %b" expr="%{HTTP_HOST} != 'mydomain.com'"

    Alias /static /var/www/html/frontpage/static
    <Directory /var/www/html/frontpage/static>
        Require all granted
    </Directory>

    # Next, add the following directory block
    <Directory /var/www/html/frontpage>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess frontpage python-home=/var/www/html/venv python-path=/var/www/html
    WSGIProcessGroup frontpage
    WSGIScriptAlias / /var/www/html/frontpage_project/wsgi.py
</VirtualHost>

Однако вышеописанное вызывает эту ошибку

$ sudo apachectl configtest
AH00526: Syntax error on line 6 of /etc/httpd/conf.d/mydomain.conf:
CustomLog takes two or three arguments, a file name, a custom log format string or format name, and an optional "env=" or "expr=" clause (see docs)

Как настроить пользовательские лог-операторы правильно?

1 Ответ

0 голосов
/ 08 января 2020

Я думаю, что все выражение должно быть заключено в кавычки вместе с "expr =", то есть:

CustomLog /var/log/httpd/access_log "%h %l %u %t \"%r\" %>s %b" "expr=%{HTTP_HOST} == 'mydomain.com'"
CustomLog /var/log/httpd/garbage_access_log "%h %l %u %t \"%r\" %>s %b" "expr=%{HTTP_HOST} != 'mydomain.com'"

См. https://httpd.apache.org/docs/2.4/expr.html#examples, последний пример

...