Clicky

Por qué aparecen errores 404 de Traffic Advice en los registros de mi servidor web

/.well-known/traffic-advice

Google Chrome intenta verificar si tiene activado la precarga de contenido

Recibimos constantes solicitudes para el archivo /.well-known/traffic-advice en los registros de nuestro servidor web para todos nuestros sitios web. Como el archivo no existía en ese momento, los registros emitieron varios errores 404 no encontrado. Esta publicación muestra cómo manejar ese tipo de solicitudes para que no de error.

¿Qué hay en los registros de acceso de Nginx?

Todos los días había muchas de estas entradas en todos nuestros sitios web principales. Todas tenían el mismo agente de usuario: Chrome Privacy Preserving Prefetch Proxy.

Esta es una muestra de las entradas del access.log de Apache correspondientes a /.well-known/traffic-advice.

66.102.6.9 - - [19/Jan/2024:02:51:11 +0100] "GET /.well-known/traffic-advice HTTP/2.0" 404 1554 "-" "Chrome Privacy Preserving Prefetch Proxy"

El bot de Chrome Privacy Preserving Prefetch Proxy

La información más cercana y antigua relacionada con esto es este borrador de especificación y la página web de Google sobre el Private prefetch proxy in Chrome (Proxy de captación previa privada en Chrome).

Según Google, es una característica de Chrome que precarga contenido de origen cruzado sin exponer la información del usuario, de modo que si un usuario visita una URL precargada, se cargará más rápido. Google encontró que el Largest Contentful Paint es entre un 20% y un 30% más rápido en navegaciones precargadas.

¿Qué es el fichero traffic-advice?

El archivo traffic-advice, que reside en el directorio /.well-known/ es un archivo de configuración en formato JSON. No tiene la extensión .json, quizás por flexibilidad en el futuro.

Por ahora sólo lo usa Chrome. El archivo traffic-advice lo utilizan los servidores de Chrome Privacy Preserving Prefetch Proxy que visitan tu sitio web para informarles si deben realizar una carga previa de tus páginas o no, y en qué medida. El porcentaje del "cuánto" es un valor flotante entre 0,0 (0) y 1,0 (100%).

Cómo agregar a Nginx el fichero traffic-advice

Si estás utilizando el servidor web Nginx, estos son los pasos sobre cómo configurar Nginx para incluir el archivo /.well-known/traffic-advice (Haz esto con cuidado porque no tengo un servidor Nginx y no he podido probarlo).

Primero, crea esta estructura de directorios. Esto supone que tu directorio de inicio de Nginx está en /usr/share/nginx/html

sudo mkdir -p /usr/share/nginx/html/.well-known

A continuación, crea el archivo traffic-advice:

sudo vi /usr/share/nginx/html/.well-known/traffic-advice

Agrega este contenido a traffic-advice:

[{
"user_agent": "prefetch-proxy",
"google_prefetch_proxy_eap": {
"fraction": 1.0
}
}]

Ahora, configura Nginx para devolver este archivo con una application/trafficadvice+json de tipo de contenido MIME personalizado.

Edita /etc/nginx/nginx.conf y agrega estas líneas justo antes del final del bloque del servidor:

location ^~ /.well-known/traffic-advice {
allow all;
types { } default_type "application/trafficadvice+json; charset=utf-8";
alias /usr/share/nginx/html/.well-known/traffic-advice;
}

Finalmente, recarga Nginx:

sudo systemctl reload nginx.service

Intenta visitar su sitio web usando en un terminal curl -i DOMAIN.COM/.well-known/traffic-advice y debería devolver el tipo MIME personalizado y el contenido (Cambia DOMAIN por el nombre de tu dominio como lo hacemos para apañados.es aquí abajo):

$ curl -i https://www.apañados.es/.well-known/traffic-advice
HTTP/1.1 200 OK
Date: Fri, 19 Jan 2024 14:16:46 GMT
Server: Apache
X-Content-Type-Options: nosniff
Upgrade: h2,h2c
Connection: Upgrade
Last-Modified: Fri, 19 Jan 2024 14:09:38 GMT
ETag: "65-60f4d07cd8525"
Accept-Ranges: bytes
Content-Length: 101
Cache-Control: no-cache, max-age=0, must-revalidate
Content-Type: application/trafficadvice+json

[{
"user_agent": "prefetch-proxy",
"google_prefetch_proxy_eap": {
"fraction": 1.0
}

Cómo agregar traffic-advice a Apache

Si estás utilizando el servidor web Apache, estos son pasos sobre cómo configurarlo para incluir el archivo /.well-known/traffic-advice.

Primero, crea esta estructura de directorios. Esto supone que tu directorio de inicio de Apache está en /home/DOMAIN/public_html (donde DOMAIN es el nombre de tu dominio)

sudo mkdir -p /home/DOMAIN/public_html/.well-known

A continuación, crea el archivo traffic-advice:

sudo vi /home/DOMAIN/public_html/.well-known/traffic-advice

Agrega este contenido al traffic-advice:

[{
"user_agent": "prefetch-proxy",
"google_prefetch_proxy_eap": {
"fraction": 1.0
}
}]

Ahora, configura Apache para devolver este archivo con una application/trafficadvice+json de tipo de contenido MIME personalizado.

Edita el .htaccess principal del sitio y agrega estas líneas:

RewriteRule "^/\.well-known/traffic-advice$" - [T=application/trafficadvice+json,END]

y este bloque también:

<FilesMatch "traffic-advice">
Header set Content-Type "application/trafficadvice+json"
</FilesMatch>

Finalmente, recarga Apache:

sudo systemctl reload httpd.service

Como hemos visto antes intenta visitar tu sitio web usando curl -i DOMAIN.COM/.well-known/traffic-advice y debería devolver el tipo MIME personalizado.

Cómo permitir que se cargue previamente solo un porcentaje

Si deseas controlar una cantidad específica de tráfico, puedes configurarla en el archivo traffic-advice.

Por ejemplo, si deseas permitir que solo se cargue previamente el 20% del tráfico (0,2), convierte el porcentaje a su fracción equivalente:

[{
"user_agent": "prefetch-proxy",
"fraction": 0.2
}]

Cómo no ser cargado previamente

Si deseas rechazar todas las solicitudes de carga previa, esta es la configuración:

[{
"user_agent": "prefetch-proxy",
"disallow": true
}]

Este último escenario se puede aplicar a casos en los que, debido a un aumento repentino en las solicitudes, decides devolver temporalmente un estado 503 Servicio no disponible (en mantenimiento) y rechazar temporalmente las solicitudes de carga previa. También puede agregar el encabezado Cache-Control: no-store para no almacenar la solicitud y el encabezado Retry-After:.

Jesus_Caceres