php - s3client - ¿Cómo se sirven contenidos estáticos/multimedia(solo) de s3 y otros de EC2?
s3client php (2)
Quiero servir mi contenido estático / multimedia (imágenes por ahora) desde S3 pero mi url debería ser como lo es ahora. Por ejemplo:
http://example.com/resources/img/me.jpg es una de las URL de mi imagen actual que ahora se sirve desde el servidor nativo (el almacenamiento de EBS viene con EC2). Ahora quiero almacenar este archivo me.jpg en un cubo de s3 y luego, si alguien escribe la URL anterior, se trae desde allí.
Sé que esto es posible creando un nombre de cubo como example.com y www.example.com y luego configurando Route 53 CNAME (Alias) para s3-website-region.amazonaws.com
Pero, ¿qué pasará cuando escriba http://example.com/blog/cool-stuff-blog ? ¡Esto no está destinado a un contenido estático / multimedia! Necesita ejecutar el código del lado del servidor (Python / PHP).
Pero con la configuración anterior de mi dominio de trabajo actual, ¿qué va a pasar? ¿No intentará proporcionar algo de contenido de S3 y fallará?
¿Cómo puedo hacerlo? No digas tener un subdominio como static.example.com y atender a todas las solicitudes de archivos estáticos. Para mí eso es inaceptable ahora. Quiero usar exactamente el mismo nombre de dominio.
Crea una distribución CloudFront.
Configure 2 servidores de "origen", uno es su servidor principal y el otro como su cubo S3.
Configure el patrón de ruta *
predeterminado para enrutar a su servidor principal y configure /resources/*
para que apunte a su categoría (o las rutas que necesite, puede configurar más de una).
CloudFront compara cada solicitud con los patrones de ruta y reenviará cada solicitud al back-end apropiado, en función del primer patrón coincidente.
Si no desea utilizar la capacidad de caché de CloudFront, puede desactivarla configurando la opción para "reenviar todos los encabezados de solicitud al origen".
Agregue su nombre de dominio a la lista de nombres de dominio alternativos asociados a su distribución.
Seleccione el nivel de precios de CloudFront que sea apropiado para su carga de trabajo y su presupuesto: es posible que pueda mantener los costos un poco más bajos al deshabilitar las ubicaciones más caras de CloudFront si ese no es el lugar donde se encuentra su audiencia.
Después de la prueba, dirija su nombre de dominio a la distribución de CloudFront, con un Alias A-Record en la Ruta 53.
También puede agregar "orígenes" adicionales si desea enviar contenido desde diferentes rutas desde múltiples depósitos o clústeres de servidor back-end, a través de un solo nombre de host.
Personalmente, creo que actualizar las URL e ir con un subdominio es el mejor enfoque (solo para el registro), pero debería poder usar reglas de reescritura en la configuración del servidor web para lograr lo que desea.