Tengo problemas para encontrar una palabra específica en nginx $ request_body variable. Quiero proxy de pasar si la solicitud cuerpo tiene una palabra especial en él,nginx buscar una palabra específica en la ubicación
Así que mi enfoque es la siguiente:
location ~ \.php$ {
if ($request_body ~* (.*)) {
proxy_pass http://test.proxy;
break;
}
# other case...
}
Esto coincide con todo y el caso de obras declaración, pero si cambio de la expresión regular de ninguna manera, no puedo recibir un golpe.
Así que mi pregunta ahora es:
Cómo qué necesito para definir la expresión regular en nginx correctamente a contrastar, "objetivo", por ejemplo?
¡Gracias de antemano!
No contenga la respiración. Puede alternar http://wiki.nginx.org/HttpCoreModule#client_body_in_single_buffer si cuenta. Pero no creo que pueda hacer coincidir el cuerpo de solicitud – rzab
Ahora entiendo que el problema no está dentro de la expresión regular, pero que $ request_body parece estar vacío en este punto, incluso probé el módulo echo que proporciona un método read_request_body, pero sigue vacío :( – sharpner
Exactamente. El documento http://wiki.nginx.org/EmbeddedPerlModule indica que $ request_body está disponible cuando nginx mantiene el cuerpo en la memoria como se opone en un archivo temporal. "Es necesario limitar su [ body] size con la ayuda de client_max_body_size y asignar el tamaño suficiente para el buffer utilizando client_body_buffer_size. "Supongo que se sugiere establecer client_max_body_size a un valor menor que client_body_buffer_size. – rzab