CDN y bucles de redirección

1. Bucle de redirección

Cuando navegamos por Internet, en ocasiones nos encontramos con los siguientes errores que nos indica el navegador:

ERR_TOO_MANY_REDIRECTS

Es decir, demasiados redireccionamientos, este error impide que los usuarios naveguen por el contenido deseado.

¿Por qué ocurre este error?

Este error generalmente es causado por un servidor web mal configurado, un caso típico es un bucle de redirección. Por ejemplo: para dos URL:

url_a

url_b

El servidor web configura las siguientes redirecciones para url_a:

Cuando el usuario solicite url_a, redirigir a url_b.

De esta forma, cuando el usuario visite url_a, la URL de solicitud real del usuario cambiará y la solicitud saltará de url_a a url_b.

En este punto, si el servidor web también configura la redirección para url_b:

Cuando el usuario solicite url_b, redirigir a url_a.

De esta forma, se generará un bucle de redirección: cuando el usuario acceda a url_a, la URL de solicitud real del usuario cambiará y la solicitud saltará de url_a a url_b; después de que la solicitud llegue a url_b, volverá a saltar a url_a.

Lo anterior es un escenario relativamente simple e intuitivo para generar errores de bucle de redirección. En un escenario del mundo real, los bucles de redirección pueden no ser tan simples. Por ejemplo, puede haber más de dos URL en la cadena circular que provoca bucles de redirección:

url_a > url_b > url_c > url_d > url_a

Obviamente, esto aumenta la dificultad de la resolución de problemas.

2. CDN y bucle de redirección

En mi experiencia práctica, hay otra situación que es un problema con la CDN, cuando la configuración de la CDN no es compatible con la configuración del servidor de origen, también se generará un bucle de redirección.

Por ejemplo:

Para los siguientes sitios:

www.sitio.com

Para la aceleración de CDN, configure la dirección del sitio de origen como:

wwwcdn.site.com

Los usuarios pueden acceder al sitio a través de las siguientes urls:

Software de desarrollo de aplicaciones personalizadas para empresas - Salesforce.com

Software de desarrollo de aplicaciones personalizadas para empresas - Salesforce.com

La diferencia entre las URL anteriores es solo que los protocolos utilizados son diferentes, uno es http y el otro es https.

Dado que la CDN está habilitada, la solicitud del usuario no llega directamente al servidor de origen, sino que es interceptada por el nodo perimetral de la CDN. De acuerdo con la situación de la memoria caché, el nodo perimetral de la CDN solicita el servidor de origen a través de la siguiente URL:

http://wwwcdn.site.com

https://wwwcdn.site.com

De manera similar, la diferencia entre las dos URL de regreso a la fuente de la CDN está solo en el protocolo. De hecho, puede configurar el protocolo utilizado por el respaldo a la fuente de CDN. Según las consideraciones de rendimiento, generalmente se configura para usar el protocolo http para el respaldo a la fuente de CDN, lo que significa que el respaldo a la fuente de CDN fuente utiliza la siguiente URL:

http://wwwcdn.site.com

Hasta ahora, un sitio acelerado por CDN funciona normalmente.

Generación de bucle de redirección

Supongamos que hay un nuevo requisito en este momento, que requiere que los usuarios utilicen el protocolo https para acceder al sitio. Por supuesto, no podemos obligar al navegador del usuario a escribir https al ingresar el nombre de dominio, la solución es hacer una redirección. Si la redirección se implementa en el servidor de origen, debe modificar la configuración web del servidor de origen (nginx):

server {

       listen 80;

       listen 443 ssl;

       server_name www.site.com wwwcdn.site.com;

       ssl_certificate /etc/nginx/ssl/site.com.fullchain.cer;

       ssl_certificate_key /etc/nginx/ssl/site.com.key;

       access_log off;

       root /home/site/guangzhuiyuan/appdownload/unipixel;



       if ($scheme = http) {

              rewrite "^/(.*)$" https://$server_name/$1 permanent;

       }

      

       ...

}

Aquí se agrega un comando de reescritura, cuando el usuario usa el protocolo http, se ve obligado a saltar al protocolo https. Sin embargo, cuando un usuario accede al sitio utilizando la siguiente url:

Software de desarrollo de aplicaciones personalizadas para empresas - Salesforce.com

Indicación del navegador:

ERR_TOO_MANY_REDIRECTS

Ha aparecido un bucle de redirección, resolvamos el proceso de solicitud:

1. Un usuario accede al Software de desarrollo de aplicaciones personalizadas para empresas - Salesforce.com a través de un navegador .

2. La solicitud llega a la CDN.

3. El CDN regresa al origen a través de http://wwwcdn.site.com .

4. El servidor de origen recibe la solicitud http://wwwcdn.site.com .

5. El servidor de origen realiza la redirección y la solicitud del usuario se redirige a CDN - Inicio .

6. La solicitud llega a la CDN.

7. El CDN regresa al origen a través de http://wwwcdn.site.com .

8. El servidor de origen recibe la solicitud http://wwwcdn.site.com .

9. El servidor de origen realiza la redirección y la solicitud del usuario se redirige a CDN - Inicio .

… …

Solución

Después de resolverlo, podemos saber que el núcleo del problema es que la CDN regresa al origen utilizando el protocolo http, y el servidor de origen redirige el protocolo http, lo que activa la segunda solicitud del usuario y hace que la CDN regrese a la origin nuevamente utilizando el protocolo http, y así sucesivamente. La solución está en romper la cadena circular.

método uno:

La redirección de http a https en el lado del cliente está a cargo de la CDN y la redirección no se realiza en el servidor de origen.

Método dos:

El servidor de origen es responsable de la redirección de http a https en el lado del cliente, y el protocolo de regreso al origen de CND se cambia a https.

Método tres:

Divida www.site.com y wwwcdn.site.com en dos configuraciones de servidor independientes, no las coloque en el mismo bloque de configuración del servidor nginx y, www.site.com redirige, wwwcdn.site.com no redirige.

Supongo que te gusta

Origin blog.csdn.net/Dancen/article/details/125200760
Recomendado
Clasificación