Qu'est-ce qu'une implémentation en Reverse Proxy ?




Contexte

Eulerian collecte des données comportementales afin d'alimenter des solutions marketing d'aide décisionnelle, destinées aux fonctions Acquisition et Analytics des entreprises B2C et B2B.

Historiquement, les acteurs des industries marketing et publicitaire collectes des données comportementales via un SDK Web (aussi appelé Tag Javascript) qui envoie des requêtes de collecte depuis le navigateur de l'utilisateur. On parle de suivi "client-side".

Avec la montée en puissance des bloqueurs de publicités et des restrictions techniques liées aux enjeux de confidentialité, le cookie tiers utilisé par de nombreux acteurs de l'industrie est destiné à disparaître à horizon Septembre 2024, avec un impact fortement négatif attendu sur la qualité et la quantité des données disponibles.

Déjà aujourd'hui, les bloqueurs de publicités et les plugins de confidentialité peuvent intercepter les requêtes envoyées par une solution analytique et les empêcher d'atteindre ses serveurs (ceux de la solution analytique).

Depuis 2006, Eulerian opère une collecte entièrement first party et n'est pas impactée par la disparition annoncée des cookies tiers. Néanmoins une implémentation en Reverse Proxy permet à un client Eulerian d'optimiser la qualité de la collecte de données comportementales, notamment vis à vis d'un contexte de collecte first party de plus en plus challengé par Apple sur ces systèmes d'exploitation (iOS notamment) et sur son navigateur (Safari).

Avec un Reverse Proxy, vous pouvez acheminer les requêtes de collecte à travers votre propre domaine ( my-site.fr ) et vous assurer qu'elles sont envoyées de manière transparente et efficiente vers votre plateforme Eulerian.


Qu'est-ce qu'un Reverse Proxy ?

Un Reverse Proxy est une solution installée, déployée et maintenue par l'équipe IT du client Eulerian, directement dans son infrastructure technique.

Techniquement, il s'agit d'un serveur qui agit comme un intermédiaire entre le navigateur d'un utilisateur et un serveur web.

Lorsque la navigation d'un utilisateur sur votre site  my-site.fr  génère des requêtes vers un serveur Eulerian, ces requêtes sont interceptées par le Reverse Proxy, qui les achemine vers un autre serveur backend (le votre), avant de les transférer au serveur Eulerian.

Avant de les transmettre, le Reverse Proxy agit donc comme une passerelle, en collectant des requêtes faites à une adresse spécifique sur votre domaine ( my-site.fr/collection ), puis en les transférant vers un autre domaine ( client.eulerian.net ).

Une fois que le serveur approprié reçoit et traite ces requêtes, il renvoie la réponse au proxy inverse, qui la transmet ensuite à l'utilisateur.



Pourquoi utiliser un Reverse Proxy ?

Un proxy inverse offre plusieurs avantages :

Assurer une collecte de données précise

Pour la part de votre trafic qui utilise des bloqueurs de publicité ou des plugins de confidentialité, les requêtes vers les serveurs Eulerian peuvent ponctuellement être interceptées et la durée de vie de l'identifiant first party peut être limitée.

L'utilisation d'un Reverse Proxy garantit que vous pouvez contourner les limitations et assurer une collecte de données de qualité mais également pérenne.


Contrôle sur le trafic web

Un Reverse Proxy vous permet également d'exercer un contrôle plus précis sur la communication entre votre site web et nos applications et services.


Lien avec le navigateur source

En déployant un Reverse Proxy et contrairement a une solution intégralement server-side, Eulerian peut tout de même interagir avec le navigateur client et l'applicatif de votre site client-side.

Cela permet de conserver le meilleur des deux mondes en évitant de se couper de fonctionnalités existantes permettant certains cas d'usage métiers, parmi lesquels, par exemple, l'échange de données avec des outils de personnalisation (A/B testing).

Pour résumer, vous pouvez optimiser votre configuration existante en mettant en place une configuration de suivi avancée où vous capturez les données d'analytique sur votre propre domaine, puis les transférez à Eulerian.


Exemple de tag

<script type="text/javascript">
(function(p,a){
var s=window,v=document,e=s.location.hostname,i=(e||a).length,y=5381,k='script',o=v.createElement(k);
for(;i;){i-=1;y=(y*33)^e.charCodeAt(i)}y='_EA_'+(y>>>=0);
(function(e,a,s,y){s[a]=s[a]||function(){(s[y]=s[y]||[]).push(arguments);s[y].eah=e;};}(e,a,s,y));
i=new Date/1E7|0;o.ea=y;y=i%26;o.async=1;o.src='//'+e+p+'/'+String.fromCharCode(97+y,122-y,65+y)+(i%1E3)+'.js?2;1';
s=v.getElementsByTagName(k)[0];s.parentNode.insertBefore(o,s);})('/collection','EA_push');
</script>


Dans cet exemple si nous considérons que l'url de votre site est  https://www.my-site.fr  alors comme vous avez spécifié /collection comme URI , les appels de la solution seront tous envoyés vers :  https://www.my-site.fr/collection 

Votre proxy doit donc capter les appels arrivant sur cette URI et les passer vers le domaine de collecte


Exemple de configuration NGINX

location ~ ^/<COLLECT_PATH>/(.*)$ {
access_log /var/log/nginx/proxy.log;
proxy_pass https://<DOMAINE_COLLECTE>/$1$is_args$args;

proxy_set_header X-Eulerian "p;1;$remote_addr;$http_host;/<COLLECT_PATH>";
proxy_set_header Upgrade-Insecure-Requests "";

proxy_http_version 1.1;

# avoid 504 gateway timeout
proxy_temp_file_write_size 64k;

proxy_connect_timeout 5s;
proxy_send_timeout 5s;
proxy_read_timeout 5s;
send_timeout 5s;

proxy_cache off;
proxy_redirect off;
proxy_ssl_verify off;
proxy_buffering on;
proxy_request_buffering on;
proxy_store off;
proxy_ssl_server_name on;

proxy_buffer_size 64k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;

proxy_ignore_headers X-Accel-Redirect X-Accel-Expires X-Accel-Limit-Rate X-Accel-Buffering X-Accel-Charset;
}


En reprenant l'exemple plus haut :
  • uri: /collection
  • domaine de collecte:  client.eulerian.net 
La configuration NGINX devient :
location ~ ^/collection/(.*)$ {
access_log /var/log/nginx/proxy.log;
proxy_pass https://client.eulerian.net/$1$is_args$args;

proxy_set_header X-Eulerian "p;1;$remote_addr;$http_host;/collection";
proxy_set_header Upgrade-Insecure-Requests "";

proxy_http_version 1.1;

# avoid 504 gateway timeout
proxy_temp_file_write_size 64k;

proxy_connect_timeout 5s;
proxy_send_timeout 5s;
proxy_read_timeout 5s;
send_timeout 5s;

proxy_cache off;
proxy_redirect off;
proxy_ssl_verify off;
proxy_buffering on;
proxy_request_buffering on;
proxy_store off;
proxy_ssl_server_name on;

proxy_buffer_size 64k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;

proxy_ignore_headers X-Accel-Redirect X-Accel-Expires X-Accel-Limit-Rate X-Accel-Buffering X-Accel-Charset;
}



Configuration pour mesurer la post-impression


Dans le cas où vous souhaiteriez mesurer les impression et l'impact de la post-impression il est nécessaire de s'assurer que le proxy mis en place pourra traiter les volumes associés.

Si vous ne souhaitez pas que le proxy le traite il est alors possible de créer une délégation de domaine afin qu'Eulerian puisse tracker les impressions sur sa propre infrastructure, pour cela il est absolument nécessaire que l'on soit autorisé a poser les cookies au niveau du domaine.

En reprenant l'exemple du site  https://www.my-site.fr  qui a un proxy déclaré sur l'uri /collect , l'opérateur du site peut créer un sous-domaine de collecte par exemple  https://elr-imp.my-site.fr  qui sera aliasé via une commande CNAME sur l'infrastructure de collecte.
Les pixels utiliseront le sous-domaine  https://elr-imp.my-site.fr  pour poser des cookies sur le domaine .my-site.fr , une fois que l'internaute arrivera sur le domaine  https://www.my-site.fr  le proxy pourra refournir les cookies de façon standard car ils auront été posés sur le domaine .my-site.fr