Tenemos un cliente con un sitio que se ejecuta en Apache. Recientemente, el sitio ha visto un aumento de la carga y, como un espacio intermedio, queremos cambiar todo el contenido estático del sitio a dominios sin cookies, por ejemplo http://static.thedomain.com
.
La aplicación no se entiende bien. Entonces, para darles a los desarrolladores tiempo para enmendar el código para que apunten sus enlaces al servidor de contenido estático ( http://static.thedomain.com
), pensé en enviar el sitio proxy a través de nginx y reescribir las respuestas salientes de modo que los enlaces /images/...
se vuelvan a escribir como http://static.thedomain.com/images/...
.
Entonces, por ejemplo, en la respuesta de Apache a nginx hay un blob de encabezados + HTML. En el HTML devuelto por Apache tenemos <img>
etiquetas que se ven así:
<img src="/images/someimage.png" />
Quiero transformar esto a:
<img src="http://static.thedomain.com/images/someimage.png" />
Para que el navegador al recibir la página HTML solicite las imágenes directamente desde el servidor de contenido estático.
¿Es esto posible con nginx (o HAProxy)?
He tenido una mirada superficial a través de los documentos, pero nada me llamó la atención, excepto reescribir las URL entrantes.
Es mejor utilizar la función de proxy y buscar el contenido desde el lugar apropiado, en lugar de reescribir URL y enviar redireccionamientos al navegador.
Un buen ejemplo de contenido proxy se ve así:
En esta configuración, en lugar de redirigir solicitudes
static.domain.com
y esperar que el navegador realice otra solicitud, nginx simplemente sirve el archivo desde la ruta local relevante. Si la solicitud es dinámica, el proxy se activa y obtiene la respuesta de un servidor Apache (local o remoto) sin que el usuario final lo sepa.Espero que eso ayude
fuente
proxy_pass
configurarlo en el servidor Apache, por ejemploproxy_pass http://172.16.3.1:80
. es decir, trasladamos la dirección IP pública del sitio al servidor nginx / CDN.