echo_read_request_body não funciona. Como registrar o corpo da solicitação POST (nginx)?

2

Eu preciso registrar os dados do POST. Eu adicionei à minha configuração

 location / {
     echo_read_request_body;
     access_log     /var/log/nginx/domains/site.post.log postdata;
 }

E também adicionou isso à http section

log_format  postdata '$time_local $request_body';

Mas no meu log, só consigo ver a hora e o traço locais:

23/Jul/2016:16:07:49 +0000 - 

Qual é o problema?

    
por Vladimir Kovalchuk 23.07.2016 / 22:59

2 respostas

0

Por padrão, o Nginx não é fornecido com o módulo que contém o echo_read_request_body . Você precisa compilá-lo sozinho com o módulo.

In our use case, to log a request body, what we need is to use the echo_read_request_body command and the $request_body variable (contains the request body of the Echo module). However, this module is not distributed with NGINX by default, and to be able to use it we have to build NGINX from its source code by building it with the source code of the Echo module included."

de link

    
por 15.02.2017 / 18:26
0
location = / {
  log_format postdata $request_body;
  access_log /var/log/nginx/domains/site.post.log postdata;
  fastcgi_pass php_cgi;
}

O nginx não toca no corpo da solicitação do cliente, a menos que seja necessário, para que não satisfaça a variável $ request_body, há algumas exceções 1) se ele envia uma solicitação para um proxy 2) ou um servidor fastcgi. Então, neste exemplo acima, o truque é que o nginx acredite que você vai chamar um script cgi.

    
por 15.02.2017 / 18:12

Tags