ec2 aws nginx amazon-s3

aws - jenkins nginx ubuntu



Nginx Proxy Pass S3 archivo html especĂ­fico (2)

Yo estuve allí, antes de tener mis archivos en mi servidor local y pude atenderlos muy bien. Ahora, moví mis archivos estáticos a S3, pero quiero servir el archivo de inicio index.html con un dominio personalizado. Desde index.html debe ser posible navegar a otro .html .

Hasta ahora tengo:

server { listen 443 ssl http2; listen [::]:443 ssl http2; include snippets/letsencrypt.conf; include snippets/ssl-params.conf; charset utf-8; server_name mydomain; location / { proxy_set_header Host ''s3-eu-west-1.amazonaws.com''; proxy_set_header Authorization ''''; proxy_hide_header x-amz-id-2; proxy_hide_header x-amz-request-id; proxy_hide_header Set-Cookie; proxy_ignore_headers "Set-Cookie"; proxy_intercept_errors on; set $indexfile "s3-eu-west-1.amazonaws.com/myprod-bucket/static/js/frontend/build_v0.5/"; proxy_pass https://$indexfile; # expires 1y; log_not_found off; auth_basic "Restricted Content"; auth_basic_user_file /etc/nginx/.htpasswd_finder; } }

Parece que no puedo encontrar ejemplos que funcionen para mi caso, ¿qué estoy haciendo mal?

ACTUALIZACIÓN: cambié esto un poco basado en https://stackoverflow.com/a/22843758/977622 y comencé a obtener:

Refused to execute script from ''../vendor.5ad3d736.js'' because its MIME type (''text/html'') is not executable, and strict MIME type checking is enabled.

y

Resource interpreted as Stylesheet but transferred with MIME type text/html: "../styles/main.b812e04a.css".


En una situación de proxy, el tipo de contenido es especificado por el servidor de origen (S3 en este caso), a menos que se anule. Puede especificar tipos de mime en objetos S3 cuando los sube. Si lo hace a través de la interfaz web S3, asegúrese de no desmarcar ''Calcular los tipos de contenido automáticamente ''. Las herramientas AWS cli también adivinan los tipos de mime automáticamente, a menos que se especifique lo contrario. Si usa algo más para cargar los archivos, debe consultar el manual de la herramienta correspondiente / referencia de API.

También podría servir su sitio web directamente desde S3, consulte Hosting de un sitio web estático en Amazon S3


No estoy seguro de si todavía es relevante para usted, pero le sugiero que envíe su CSS y otros archivos estáticos directamente desde S3 y no a través de su Nginx. Es decir, sirva su index.html con un proxy_pass como lo hace ahora, pero los enlaces a los archivos CSS y JS dentro de su index.html deben ser absolutos, con su segmento S3 como dominio.

Esto resolverá su problema aquí, y sería mejor por otras razones, tales como:

  • Reducirá los costos de CPU y red del servidor que ejecuta Nginx.
  • Servirá su sitio más rápido al no pasar por su propio servidor para cada solicitud de archivo estático.
  • S3 ofrece cifrado, compresión, capacidad para agregar un CDN y muchas otras funciones útiles. A menos que haya una razón convincente para pasar por su propio servidor, lo evitaría.

Tenga en cuenta que sus usuarios seguirán viendo su sitio a través de su propio dominio, solo serán los archivos CSS y JS los que serán servidos desde el dominio S3.