Saltar al contenido principal
7 min de lectura

Seguimiento de Primera Parte con nginx/Apache

Configura un proxy de primera parte en tu servidor auto-hospedado usando la configuración del proxy inverso nginx o Apache.

Dificultad: Media - Requiere acceso a archivos de configuración del servidor y conocimientos básicos de terminal.

Por Qué Esto Funciona (Mismo Origen)

Este enfoque utiliza /api/_z/script.js que está en el mismo origen que tu sitio web. Firefox ETP y otras protecciones de seguimiento solo bloquean solicitudes de origen cruzado.

  • El navegador ve: tudominio.com/api/_z/script.js → Mismo origen ✅
  • nginx/Apache proxifica la solicitud al servidor Zenovay (el navegador nunca lo ve)
  • Todas las protecciones de seguimiento se evitan porque la solicitud es de primera parte

Antes de Comenzar

Asegúrate de tener:

  • Acceso root/sudo a tu servidor
  • nginx o Apache instalados
  • Tu código de seguimiento de Zenovay (encontrado en Dominios, selecciona tu sitio, luego la pestaña General)
  • Acceso SSH a tu servidor

Formato de Tu Código de Seguimiento

Tu código de seguimiento se ve así: ZV_XXXXXXXXXX

  • Comienza con ZV_
  • Seguido de 10 caracteres (letras y números)
  • SENSIBLE A MAYÚSCULAS - cópialo exactamente

Ejemplo: ZV_Q8U0GYD70WR


Configuración de nginx

Paso 1: Agregar la Ubicación del Proxy

Agrega el siguiente bloque de ubicación a tu configuración del servidor nginx:

/etc/nginx/sites-available/tudominio.confNGINX
server {
  listen 80;
  listen 443 ssl;
  server_name tudominio.com www.tudominio.com;

  # Tu configuración SSL existente...
  ssl_certificate /etc/letsencrypt/live/tudominio.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/tudominio.com/privkey.pem;

  # Tu configuración root existente...
  root /var/www/tudominio;
  index index.html;

  # Proxy de primera parte de Zenovay
  location /api/_z/ {
      # Proxy al endpoint de primera parte de Zenovay
      proxy_pass https://api.zenovay.com/fp/;

      # Establecer el encabezado Host correcto
      proxy_set_header Host api.zenovay.com;

      # Reenviar la IP del cliente real para geolocalización precisa
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Zenovay-Real-IP $remote_addr;

      # Requerido para backend HTTPS
      proxy_ssl_server_name on;
      proxy_ssl_protocols TLSv1.2 TLSv1.3;

      # Tiempos de espera
      proxy_connect_timeout 10s;
      proxy_send_timeout 10s;
      proxy_read_timeout 30s;

      # Almacenamiento en búfer
      proxy_buffering on;
      proxy_buffer_size 4k;
      proxy_buffers 8 4k;
  }

  # Tus bloques de ubicación existentes...
  location / {
      try_files $uri $uri/ =404;
  }
}

Paso 2: Probar la Configuración

TerminalBash
# Probar configuración de nginx
sudo nginx -t

# Si la prueba pasa, recargar nginx
sudo systemctl reload nginx

Paso 3: Agregar el Script de Seguimiento

Tu HTMLHTML
<script defer
data-tracking-code="YOUR_TRACKING_CODE"
src="/api/_z/script.js">
</script>
Tarjeta de script de seguimiento que muestra la pestaña de Primera Parte con el fragmento de script
La pestaña de Primera Parte en la configuración General de tu dominio muestra el fragmento de script preconfigurado para proxificación de primera parte.

Configuración de Apache

Paso 1: Habilitar Módulos Requeridos

Primero, habilita los módulos Apache necesarios:

TerminalBash
# Habilitar módulos de proxy
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod ssl
sudo a2enmod headers

# Reiniciar Apache
sudo systemctl restart apache2

Paso 2: Agregar la Configuración del Proxy

Agrega lo siguiente a tu configuración de host virtual Apache:

/etc/apache2/sites-available/tudominio.confAPACHE
<VirtualHost *:443>
  ServerName tudominio.com
  ServerAlias www.tudominio.com

  # Tu configuración SSL existente...
  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/tudominio.com/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/tudominio.com/privkey.pem

  # Tu raíz de documento existente...
  DocumentRoot /var/www/tudominio

  # Habilitar SSL para conexiones de proxy
  SSLProxyEngine on
  SSLProxyVerify none
  SSLProxyCheckPeerCN off
  SSLProxyCheckPeerName off

  # Proxy de primera parte de Zenovay
  ProxyPass "/api/_z/" "https://api.zenovay.com/fp/"
  ProxyPassReverse "/api/_z/" "https://api.zenovay.com/fp/"

  <Location "/api/_z/">
      # No preservar el encabezado Host original
      ProxyPreserveHost Off

      # Reenviar la IP del cliente real
      RequestHeader set X-Zenovay-Real-IP "%{REMOTE_ADDR}s"
      RequestHeader set X-Real-IP "%{REMOTE_ADDR}s"
      RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
  </Location>

  # Tu configuración existente...
  <Directory /var/www/tudominio>
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
  </Directory>
</VirtualHost>

Alternativa: Usar .htaccess

Si no tienes acceso a la configuración principal de Apache, puedes usar .htaccess (requiere mod_rewrite y mod_proxy):

.htaccessAPACHE
RewriteEngine On

# Proxy de primera parte de Zenovay
RewriteRule ^api/_z/(.*)$ https://api.zenovay.com/fp/$1 [P,L]

<IfModule mod_headers.c>
  <Location "/api/_z">
      RequestHeader set X-Zenovay-Real-IP "%{REMOTE_ADDR}s"
  </Location>
</IfModule>

Nota: Usar .htaccess para proxificación requiere AllowOverride All y mod_proxy habilitados por tu proveedor de hosting. Muchos hosts compartidos no lo permiten.

Paso 3: Probar y Reiniciar

TerminalBash
# Probar configuración de Apache
sudo apachectl configtest

# Si la prueba pasa, reiniciar Apache
sudo systemctl restart apache2

Paso 4: Agregar el Script de Seguimiento

Tu HTMLHTML
<script defer
data-tracking-code="YOUR_TRACKING_CODE"
src="/api/_z/script.js">
</script>

Verificar Que Está Funcionando

Probar con curl

TerminalBash
# Probar el endpoint del proxy
curl -I https://tudominio.com/api/_z/script.js

# Resultado esperado:
# HTTP/2 200
# content-type: application/javascript
# ...

Verificar la Pestaña de Red

  1. Abre tu sitio web en un navegador
  2. Abre DevTools (F12)
  3. Ve a la pestaña Network
  4. Recarga la página
  5. Busca /api/_z/script.js

Deberías ver:

  • Estado: 200
  • Dominio: Tu dominio (no api.zenovay.com)
  • Respuesta: Código JavaScript

Probar en Firefox

  1. Abre Firefox
  2. Configuración → Privacidad y Seguridad → Protección de Seguimiento Mejorada: Estricta
  3. Visita tu sitio
  4. Verifica que el script se cargue correctamente

Solución de Problemas

nginx: 502 Bad Gateway

Causa: nginx no puede conectarse a la API de Zenovay.

Solución:

  1. Verifica que proxy_ssl_server_name on; esté configurado
  2. Verifica que tu servidor pueda alcanzar api.zenovay.com:
    curl https://api.zenovay.com/fp/script.js
    
  3. Verifica los registros de errores de nginx: sudo tail -f /var/log/nginx/error.log

nginx: 404 Not Found

Causa: El bloque de ubicación no está coincidiendo.

Solución:

  1. Asegúrate de que la barra diagonal final sea consistente:
    • location /api/_z/ coincide con /api/_z/script.js
    • proxy_pass https://api.zenovay.com/fp/; (nota la barra diagonal final)
  2. Prueba con nginx -t y recarga

Apache: 503 Service Unavailable

Causa: Módulos de proxy no habilitados o problema de SSL.

Solución:

  1. Habilita los módulos requeridos: sudo a2enmod proxy proxy_http ssl
  2. Agrega configuración SSL de proxy:
    SSLProxyEngine on
    SSLProxyVerify none
    
  3. Verifica los registros de errores de Apache: sudo tail -f /var/log/apache2/error.log

La Geolocalización Muestra la Ubicación del Servidor

Causa: La IP del cliente real no se está reenviando correctamente.

Solución: Asegúrate de estar configurando el encabezado X-Zenovay-Real-IP:

nginx:

proxy_set_header X-Zenovay-Real-IP $remote_addr;

Apache:

RequestHeader set X-Zenovay-Real-IP "%{REMOTE_ADDR}s"

Si Está Detrás de Cloudflare o un Balanceador de Carga

Si tu servidor está detrás de Cloudflare u otro proxy, usa la IP reenviada:

nginx (detrás de Cloudflare):

proxy_set_header X-Zenovay-Real-IP $http_cf_connecting_ip;

nginx (detrás de balanceador de carga):

proxy_set_header X-Zenovay-Real-IP $http_x_forwarded_for;

Optimización de Rendimiento

Caché de nginx

Agrega caché para el script de seguimiento (opcional):

nginx.confNGINX
location /api/_z/ {
  proxy_pass https://api.zenovay.com/fp/;

  # ... otras configuraciones de proxy ...

  # Cachear el script por 1 hora
  proxy_cache_valid 200 1h;
  proxy_cache_use_stale error timeout updating;
  add_header X-Cache-Status $upstream_cache_status;
}

Caché de Apache

apache.confAPACHE
<Location "/api/_z/">
  # Habilitar caché
  CacheEnable disk
  CacheDefaultExpire 3600
</Location>

Ejemplo Completo de nginx

/etc/nginx/sites-available/tudominio.confNGINX
server {
  listen 80;
  server_name tudominio.com www.tudominio.com;
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl http2;
  server_name tudominio.com www.tudominio.com;

  ssl_certificate /etc/letsencrypt/live/tudominio.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/tudominio.com/privkey.pem;

  root /var/www/tudominio;
  index index.html;

  # Proxy de primera parte de Zenovay
  location /api/_z/ {
      proxy_pass https://api.zenovay.com/fp/;
      proxy_set_header Host api.zenovay.com;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Zenovay-Real-IP $remote_addr;
      proxy_ssl_server_name on;
  }

  location / {
      try_files $uri $uri/ /index.html;
  }
}

Lista de Verificación Final

Antes de terminar, verifica TODOS estos puntos:

  • Configuración de nginx/Apache tiene la ubicación del proxy para /api/_z/
  • La prueba de configuración pasa (nginx -t o apachectl configtest)
  • El servidor se recargó después del cambio de configuración
  • La etiqueta de script usa /api/_z/script.js (no la URL directa de Zenovay)
  • El atributo data-tracking-code contiene tu código de seguimiento correcto
  • El encabezado X-Zenovay-Real-IP se está configurando para geolocalización
  • Probado en Firefox con Protección de Seguimiento Mejorada configurada a Estricta
  • Las visitas aparecen en el panel de Zenovay

Próximos Pasos

¿Fue útil esta página?