# WAF Proxy (CloudFlare,...)

Configurer un DNS reverse proxy sur un WAF comme CloudFlare est une manière simple et fiable pour des fins de tracking en utilisant des cookies 1st party.

Contactez votre account manager pour plus de détails.

## Installation

### Créez votre WAF

1\. Dans Cloudflare (ou votre WAF), déclarez le domaine de tracking à utiliser et pointez-le vers notre infra (par ex. waf.myshop.com) et pointez-le vers l'endpoint que nous avons défini pour le proxy :

**`ca-trk-proxy.commander1.com`**

<figure><img src="https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-ce910a8848f0952aa451e955618e3d18bd2eed5c%2Fthumbnail_image001%20(3).png?alt=media" alt=""><figcaption><p>Configurer un reverse proxy vers Commanders Act sur CloudFlare</p></figcaption></figure>

2\. Côté DNS, pointez votre domaine de tracking (ex. waf.myshop.com) vers Cloudflare (le CNAME est fourni par cloudflare).

<figure><img src="https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-bcb1182b5f5ccc064d185a2ab7447709eca76076%2Fthumbnail_image001%20(4).png?alt=media" alt=""><figcaption><p>Créez une entrée CNAME sur CloudFlare</p></figcaption></figure>

### Déclarez-le dans Domain Management

1. Déclarez le domaine\
   Utilisez notre interface Domain Management pour déclarer ce domaine et ajuster la manière dont Commanders Act collecte les datas\
   `Administration > Domain Management`

<figure><img src="https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-e89b0d23a9407ddd3c54c0b78528fbe3e2c80f0d%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

2. Activez le domaine\
   Activer l'option "Containers Integration" permettra que le domaine soit inclus dans la configuration du container.

   Tous les tags Commanders Act passeront à la collecte first party.

   Cette action affectera Consent, Deduplication, Campaign, Segment, Server Side

<figure><img src="https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-0eb84af78381f3abd5066051ed22e4eec9e659b0%2Fimage%20(491).png?alt=media" alt=""><figcaption></figcaption></figure>

**Que se passe-t-il lorsque j'ai 2 domaines ou plus ?**

La priorité est donnée au domaine du site web où le container est chargé. Si aucun domaine ne correspond au domaine du site web, le 1er de la liste est utilisé.

{% hint style="warning" %}
À ce stade, **WebContainers et Privacy banners** devraient être **régénérés et déployés.**
{% endhint %}

3. Si applicable, ajustez votre tracking existant pour refléter votre nouveau domaine de tracking.\
   \
   Par exemple, sur un hit de tracking View Campaign :\
   [https://](https://waf.commandersact.com/mix/v3/?firsttime=1\&tcs=5039\&chn=referrer\&src=referrer_3\&user_id=96177\&TCID=96177\&cmp=Promotionnal+game\&cty=Italy)[waf.myshop.com](https://waf.commandersact.com/mix/v3/?firsttime=1\&tcs=5039\&chn=referrer\&src=referrer_3\&user_id=96177\&TCID=96177\&cmp=Promotionnal+game\&cty=Italy)[/mix/v3/?firsttime=1\&tcs=5039\&chn=ref](https://waf.commandersact.com/mix/v3/?firsttime=1\&tcs=5039\&chn=referrer\&src=referrer_3\&user_id=96177\&TCID=96177\&cmp=Promotionnal+game\&cty=Italy)[errer\&src=referrer\_3\&user\_id=96177\&TCID=96177\&cmp=Promotion](https://waf.commandersact.com/mix/v3/?firsttime=1\&tcs=5039\&chn=referrer\&src=referrer_3\&user_id=96177\&TCID=96177\&cmp=Promotionnal+game\&cty=Italy)[nal+game\&cty=Italy](https://waf.commandersact.com/mix/v3/?firsttime=1\&tcs=5039\&chn=referrer\&src=referrer_3\&user_id=96177\&TCID=96177\&cmp=Promotionnal+game\&cty=Italy)

## ​Dépannage

`Hôte` doit être identifié comme [waf.commandersact.com](http://waf.commandersact.com/) ce qui est ce qui est attendu.

Si le `host` est identifié comme [ca-trk-proxy.commander1.com](http://ca-trk-proxy.commander1.com/) ce qui n'est pas ce qui est attendu. Cela signifie probablement que le proxy définit le `host` paramètre dans l'en-tête vers le domaine dans [commander1.com](http://commander1.com/) au lieu de laisser le domaine original.

#### Configuration attendue du proxy

Voici la configuration attendue du proxy :

Haproxy :

```
listen tcp-443
  bind *:443
  mode tcp

  option log-health-checks
  option tcp-check

  server ca-trk-proxy ca-trk-proxy.commander1.com:443 resolvers dns check inter 30s check-sni ca-trk-proxy.commander1.com sni ssl_fc_sni check-ssl verify none
```

1. **server ca-trk-proxy**:
   * `server` est le mot-clé indiquant la définition d'un serveur dans une section backend.
   * `ca-trk-proxy` est le nom attribué à ce serveur. Il est utilisé pour identifier le serveur dans les logs et les stats.
2. [**ca-trk-proxy.commander1.com:443**](http://ca-trk-proxy.commander1.com:443/):
   * Cela spécifie l'adresse et le port du serveur. Ici, le serveur est situé à `ca-trk-proxy.commander1.com` et écoute sur le port `443` (qui est typiquement utilisé pour HTTPS).
3. **resolvers dns**:
   * `resolvers` spécifie la section resolver DNS à utiliser pour résoudre le nom d'hôte du serveur.
   * `dns` fait référence à une section resolver précédemment définie dans la configuration qui contient les détails du serveur DNS.
4. **check**:
   * Cela active les vérifications de santé pour le serveur. HAProxy vérifiera périodiquement si le serveur est en ligne et fonctionne.
5. **inter 30s**:
   * Cela définit l'intervalle entre les vérifications de santé à 30 secondes.
6. **check-sni** [**ca-trk-proxy.commander1.com**](http://ca-trk-proxy.commander1.com/):
   * `check-sni` spécifie le Server Name Indication (SNI) à utiliser pendant la vérification de santé. SNI est une extension du protocole TLS qui permet au client de spécifier le nom d'hôte auquel il tente de se connecter au début du processus de handshake.
   * `ca-trk-proxy.commander1.com` est le nom d'hôte utilisé pour le SNI pendant la vérification de santé.
7. **sni ssl\_fc\_sni**:
   * `sni` spécifie le SNI à utiliser lors de l'établissement des connexions vers le serveur.
   * `ssl_fc_sni` est un mot-clé dynamique qui utilise la valeur SNI de la connexion frontend pour cette connexion backend.
8. **check-ssl**:
   * Cela active les vérifications SSL durant les vérifications de santé, garantissant que la couche SSL/TLS est correctement établie et validée.
9. **verify none**:
   * Cette option désactive la vérification du certificat SSL du serveur pendant les vérifications de santé. Cela signifie qu'HAProxy ne validera pas le certificat contre une autorité de certification (CA).

En résumé, cette ligne de configuration définit un serveur backend nommé `ca-trk-proxy` situé à `ca-trk-proxy.commander1.com:443`. Il utilise le `dns` resolver pour la résolution DNS, effectue des vérifications de santé toutes les 30 secondes, utilise le SNI pendant les vérifications, et ne vérifie pas le certificat SSL du serveur pendant les vérifications de santé.
