Eulerian reverse proxy

Eulerian reverse proxy

L’intégration en reverse proxy permet de faire transiter les appels Eulerian par une infrastructure administrée par vos équipes.
Cette configuration peut être utilisée pour répondre à des contraintes de sécurité, d’architecture ou de politique de cookies sur le domaine.
Elle n’apporte pas de gain de qualité de donnée par rapport à une intégration classique en délégation de domaine.

Modes d’intégration disponibles

Deux modes d’intégration sont possibles :
Mode
Principe
À retenir
Chemin dédié
Un chemin du domaine principal est dédié à Eulerian, par exemple /collecte.
Aucun nouveau sous-domaine ni certificat SSL supplémentaire à maintenir.
Host dédié
Un sous-domaine est dédié à Eulerian et pointe vers les serveurs proxy administrés par le client.
Le proxy relaie les appels vers la plateforme Eulerian cible.

Mode chemin dédié

En mode chemin dédié, un chemin du site est réservé à la collecte Eulerian.
Exemple :
https://www.mon-site.fr/collecte


Dans ce mode, le tag JavaScript principal doit intégrer le chemin dédié utilisé pour la collecte.

Template du tag JavaScript

Remplacez <COLLECT_PATH> par le chemin dédié à Eulerian.
<script>
(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);})('/<COLLECT_PATH>','EA_push');
</script>


Exemple avec le chemin eulerian

<script>
(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);})('/eulerian','EA_push');
</script>


Point d’attention

Le chemin utilisé dans la configuration ne doit pas dépasser 10 caractères, afin d’éviter de surcharger les en-têtes.

Mode host dédié avec NGINX

En mode host dédié, le format du tag JavaScript ne change pas.
Vous pouvez utiliser le tag JavaScript du quick onboarding avec le sous-domaine alloué. Ce sous-domaine doit pointer vers votre serveur proxy.
Deux paramètres doivent être remplacés :
Paramètre
Description
<COLLECT_PATH>
Chemin d’accès utilisé par le proxy.
<GRID_HOST_NAME>
Cible Eulerian fournie, au format XXX.eulerian.net.

Template NGINX

location ~ ^/<COLLECT_PATH>/(.*)$ {
access_log /var/log/nginx/proxy.log;

proxy_pass https://<GRID_HOST_NAME>/$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;

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;
}


Exemple NGINX avec le chemin eulerian et le host test.eulerian.net

location ~ ^/eulerian/(.*)$ {
access_log /var/log/nginx/proxy.log;

proxy_pass https://test.eulerian.net/$1$is_args$args;

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

proxy_http_version 1.1;

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;
}


Dimensionnement

À titre indicatif, pour un volume de 1 milliard de hits par mois, il faut prendre en compte un trafic d’au moins environ 800 requêtes par seconde.
Pour ce type de volume, prévoyez :
  • au minimum 2 à 3 serveurs NGINX ;
  • une configuration ajustée à votre trafic ;
  • éventuellement un réglage de tcp_fin_timeout pour libérer les sockets plus rapidement ;
  • un mécanisme de load balancing et de failover.

Point d’attention

Lorsque la librairie est appelée via le proxy, assurez-vous que la valeur suivante est correctement transmise :
?2;1


Mode host dédié avec Apache2

La cible Eulerian est fournie au format eulerian.net.
Dans l’exemple original, la cible utilisée est :
foo.eulerian.net

L’exemple ci-dessous inclut également une mécanique permettant de supprimer la transmission de cookies spécifiques, avec les clés bar, baz et qux.

Exemple Apache2

... Virtualhost en HTTPS ...

# Activate Proxy
ProxyRequests On
SSLProxyEngine On

# For speed
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerExpire off

# To fine tune
ProxyPass / https://foo.eulerian.net/ connectiontimeout=10 timeout=10 retry=0
ProxyPassReverse / https://foo.eulerian.net/

ProxyAddHeaders off

# Eulerian header
RequestHeader unset X-forwarded-for
RequestHeader set X-Eulerian "p;1;%{REMOTE_ADDR}s"

# Drop specific cookies
RequestHeader edit* cookie "bar|baz|qux)=[^=;]*" ""
RequestHeader edit cookie "^[; ]*" ""
RequestHeader edit cookie "[; ]*
quot;
""
RequestHeader edit* cookie "; (; )*" "; "


Points d’attention Apache2

  • Le chemin utilisé ne doit pas dépasser 10 caractères.
  • La cible foo.eulerian.net est un exemple : utilisez la cible fournie par Eulerian.
  • La suppression de cookies bar, baz et qux
  • La configuration doit être adaptée à votre environnement HTTPS.

Points d’attention généraux

  • Le proxy est hébergé et administré dans votre infrastructure.
  • Cette intégration ne remplace pas la configuration Eulerian : elle sert de relais vers la plateforme Eulerian.
  • Le mode chemin dédié évite d’ajouter un sous-domaine ou un certificat SSL supplémentaire.
  • Le mode host dédié nécessite un sous-domaine dédié pointant vers vos serveurs proxy.
  • Le chemin configuré doit rester court : maximum 10 caractères.
  • Les paramètres <COLLECT_PATH> et <GRID_HOST_NAME> doivent être remplacés par les valeurs adaptées à votre configuration.
  • Sur les volumes élevés, l’infrastructure proxy doit être dimensionnée avec redondance et failover.
  • Après déploiement, vérifiez que la librairie Eulerian est bien chargée et que la valeur ?2;1 est transmise.

À retenir

L’intégration Eulerian en reverse proxy permet de faire transiter les appels de collecte par une infrastructure administrée par le client.
Elle peut répondre à des contraintes de sécurité, d’architecture ou de politique de cookies, mais elle n’améliore pas la qualité de donnée par rapport à une intégration classique en délégation de domaine.
Le choix entre chemin dédié et host dédié dépend principalement de votre architecture technique, de la gestion des domaines et certificats, et de la capacité de votre infrastructure à absorber le trafic de collecte.