Nginx Proxy Pass S3 специальный html файл
Я там, прежде чем у меня были файлы на моем локальном хосте, и я смог отлично их обслуживать. Теперь я переместил свои статические файлы на S3, но я хочу обслуживать файл start.html стартера с пользовательским доменом. Из index.html должно быть возможно перейти к другому .html
.
До сих пор я получил:
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;
}
}
Я не могу найти примеры, которые работают для моего дела, что я делаю неправильно?
UPDATE: Я немного изменил это на основе qaru.site/info/458321/..., и я начал получать:
Refused to execute script from '../vendor.5ad3d736.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.
и
Resource interpreted as Stylesheet but transferred with MIME type text/html: "../styles/main.b812e04a.css".
Ответы
Ответ 1
В типе содержимого сценария прокси указывается исходный сервер (S3 в этом случае), если он не переопределен. Вы можете указать типы mime на объектах S3 при их загрузке. Если вы сделаете это через веб-интерфейс S3, убедитесь, что вы не снимите флажок "Объяснять типы контента автоматически". Инструменты AWS cli также автоматически определяют типы mime, если не указано иное. Если вы используете что-то еще для загрузки файлов, вам необходимо консультировать соответствующее руководство по инструменту /API.
Также вы можете обслуживать веб-сайт непосредственно с S3, см. Хостинг статического веб-сайта на Amazon S3
Ответ 2
Не уверен, что это все еще актуально для вас, но я предлагаю вам обслуживать ваши CSS и другие статические файлы непосредственно с S3, а не через ваш Nginx. То есть, покажите index.html
с помощью proxy_pass
, как теперь, но ссылки на файлы CSS и JS внутри вашего index.html
должны быть абсолютными, а ваш ведро S3 - как домен.
Это позволит решить вашу проблему здесь и будет лучше по другим причинам, таким как:
- Вы снижаете затраты центрального процессора и сети на сервере Nginx.
- Вы будете обслуживать свой сайт быстрее, не пройдя свой собственный сервер для каждого статического запроса файла.
- S3 предлагает шифрование, сжатие, возможность добавления CDN и многих других полезных функций. Если у вас нет веских причин пройти через ваш собственный сервер, я бы избегал этого.
Обратите внимание, что ваши пользователи будут просматривать ваш сайт через ваш собственный домен, это только файлы CSS и JS, которые будут обслуживаться из домена S3.