Divida los clientes en nginx y pase una variable de cadena de consulta en la solicitud

Si alguna vez necesita dividir sus clientes (por ejemplo: para pruebas a / b) y enviar una variable de cadena de consulta ($ _GET) a su aplicación, indicando algo. Puede hacer lo siguiente:

nginx.conf

# Split config
split_clients
"${remote_addr}" $addQsVariable {
51% "beta=1";
49% "";
}

O:
– Para el 51% de los visitantes, establezca la variable $ addQsVariable en “beta = 1”; de lo contrario, establezca una cadena vacía.

host.conf

location ~ .php$
{
set $args "${query_string}&${$addQsVariable}";
[...]
}

O:
– Cuando se solicita un archivo php, agregue la variable $ addQsVariable a la cadena de consulta.


Piense en los clientes divididos como una función que recibe una variable ($ dirección remota ) como un argumento que se utilizará para generar un porcentaje (basado en un algoritmo hash).

Este porcentaje se comparará con los valores que informó (tomemos el 51% como ejemplo) y establezca $ addQsVariable con el valor justo después de la directiva (beta = 1).

Tenga en cuenta que si proporciona una entrada estática (como la variable IP $ remote_addr), el usuario enviará la misma variable “beta = 1” hasta que cambie su IP.

  • Para propósitos de prueba, usar “$ query_string” como entrada está bien, porque puede cambiar la URL / cadena de consulta de su navegador para simular porcentajes.