如何为我的Apache 2.4 VirtualHost编写条件CustomLog语句?

huangapple go评论58阅读模式
英文:

How do I write a conditional CustomLog statement for my Apache 2.4 VirtualHost?

问题

我正在使用以下版本的Apache(2.4)...

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

我想在我的虚拟主机块中编写自定义日志指令,以便匹配我的域名的主机标头进入一个日志,而所有其他主机标头进入另一个日志...

<VirtualHost *:80>
    ServerName mydomain.com

    # 使用主机标头确定日志位置
    # 使用主机标头确定如何响应。
    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>

    # 接下来,添加以下目录块
    <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)

如何正确设置自定义日志语句?
英文:

I'm using the following version of Apache (2.4) ...

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

I want to write custom log directives in my virtual host block such that host headers taht match my domain go to one log and all others go to a different log ...

&lt;VirtualHost *:80&gt;
    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 &quot;%h %l %u %t \&quot;%r\&quot; %&gt;s %b&quot; expr=&quot;%{HTTP_HOST} == &#39;mydomain.com&#39;&quot;
    CustomLog /var/log/httpd/garbage_access_log &quot;%h %l %u %t \&quot;%r\&quot; %&gt;s %b&quot; expr=&quot;%{HTTP_HOST} != &#39;mydomain.com&#39;&quot;

    Alias /static /var/www/html/frontpage/static
    &lt;Directory /var/www/html/frontpage/static&gt;
        Require all granted
    &lt;/Directory&gt;

    # Next, add the following directory block
    &lt;Directory /var/www/html/frontpage&gt;
        &lt;Files wsgi.py&gt;
            Require all granted
        &lt;/Files&gt;
    &lt;/Directory&gt;

    WSGIDaemonProcess frontpage python-home=/var/www/html/venv python-path=/var/www/html
    WSGIProcessGroup frontpage
    WSGIScriptAlias / /var/www/html/frontpage_project/wsgi.py
&lt;/VirtualHost&gt;

However, the above is producing this error

$ 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 &quot;env=&quot; or &quot;expr=&quot; clause (see docs)

How do I set up the custom log statements properly?

答案1

得分: 0

我认为整个表达式应该被引用,包括"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,最后一个示例。

英文:

I think that the whole expression should be quoted, together with the "expr=", i.e:

CustomLog /var/log/httpd/access_log &quot;%h %l %u %t \&quot;%r\&quot; %&gt;s %b&quot; &quot;expr=%{HTTP_HOST} == &#39;mydomain.com&#39;&quot;
CustomLog /var/log/httpd/garbage_access_log &quot;%h %l %u %t \&quot;%r\&quot; %&gt;s %b&quot; &quot;expr=%{HTTP_HOST} != &#39;mydomain.com&#39;&quot;

See https://httpd.apache.org/docs/2.4/expr.html#examples, the last example

huangapple
  • 本文由 发表于 2020年1月7日 00:16:27
  • 转载请务必保留本文链接:https://go.coder-hub.com/59615448.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定