Eu tenho este arquivo de unidade para executar um serviço no systemd.
[Unit]
Description=Varnish HTTP accelerator log daemon
After=varnish.service
[Service]
User=root
Environment="LOG_FORMAT='\"%{X-Forwarded-For}i\" %u %t \"%r\" %s %b \"%{Referer}i\ %{User-agent}i\"'"
ExecStart=/usr/bin/varnishncsa -a -w /var/log/www/www.my_website_varnish.log -q "ReqHeader ~ '^Host: www.my_website.fr'" -F $LOG_FORMAT
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
Como você pode ver, estou definindo um formato de log em uma variável e passando isso na linha de comando para o programa. Isso não está funcionando.
Quando inicio o serviço, a linha de comando atual com a qual ele foi chamado se parece com isso:
CGroup: /system.slice/varnishncsa.service
└─60950 /usr/bin/varnishncsa -a -w /var/log/www/www.my_website_varnish.log -q ReqHeader ~ '^Host: www.my_website' -F "%{X-Forwarded-For}i" "root" /run "" /bin/sh ffd205c41b1e4c1088dac...
Como você pode ver, o systemd expandiu %u
, %t
, %r
e outros, antes de passá-los na linha de comando para o meu programa. Isso está errado e não o que é desejado.
Por que vale a pena, estou seguindo as instruções no link para configurar o verniz. Mas esse problema é o de fazer com que o daemon seja executado com os argumentos de linha de comando corretos, e não um na minha configuração de Varnish.
Eu estou tentando mudar o formato de log com o -F
, a propósito, porque por padrão eu estou recebendo 127.0.0.1 em meus logs como o endereço IP do visitante, que é o endereço IP do nginix. Mas mais uma vez isso é incidental. Eu poderia querer usar sinais de porcentagem e variáveis em outros lugares na minha linha de comando.
Como posso especificar algo na linha de comando do programa em ExecStart
e impedir que systemd faça sua própria expansão de parâmetro em qualquer coisa com sinais de porcentagem?