我在那里,在我的本地主机上有我的文件之前,我能够很好地为他们服务。现在,我将我的静态文件移动到S3,但我想使用自定义域提供index.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;
}
}
我似乎无法找到适合我案例的任何例子,我做错了什么?
更新:我根据https://stackoverflow.com/a/22843758/977622改变了一下,我开始得到:
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".
答案 0 :(得分:0)
在代理方案中,内容服务器指定内容类型(在本例中为S3),除非被覆盖。您可以在上载S3对象时指定mime类型。如果您通过S3网络界面执行此操作,请确保不要取消选中' 自动计算内容类型'。 AWS cli工具还会自动猜测mime类型,除非另有说明。如果您使用其他内容上传文件,则需要查阅相应工具的手册/ API参考。
您也可以直接从S3为您提供网站,请参阅Hosting a Static Website on Amazon S3
答案 1 :(得分:0)
不确定它是否仍与您相关,但我建议您直接从S3而不是通过Nginx提供CSS和其他静态文件。也就是说,像现在一样使用index.html
为proxy_pass
提供服务,但index.html
内的CSS和JS文件的链接应该是绝对的,并将S3存储桶作为域。
这既可以解决您的问题,也可以更好地解决其他原因,例如:
请注意,您的用户仍会通过您自己的域查看您的网站,它只是将从S3域提供的CSS和JS文件。