英文:
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 ...
<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>
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 "env=" or "expr=" 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 "%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'"
See https://httpd.apache.org/docs/2.4/expr.html#examples, the last example
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论