2017-03-10 9 views
12

私は自分のlocalhost上に自分のファイルを置く前に、私はそれらをうまく提供することができました。今、staticfilesをS3に移動しましたが、index.htmlスターターファイルをカスタムドメインで配信したいと考えています。 index.htmlから他の.htmlにナビゲートする必要があります。Nginx Proxy S3固有の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:私はこのに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".

+1

あなたの/etc/nginx/mime.types設定の内容は何ですか?また、あなたのロケーションブロックにデフォルトのMIMEタイプを設定することもできます。 – Ellery

答えて

0

によって指定されます元のサーバー(この場合はS3)に置き換えられます。 S3オブジェクトをアップロードするときに、S3オブジェクトにmimeタイプを指定できます。あなたがS3のWebインターフェイスを通じてそれを行う場合は、 'コンテンツタイプを自動的に把握する'のチェックを外さないようにしてください。 ' AWS cliツールは、特に指定しない限り、自動的にMIMEタイプを推測します。ファイルをアップロードするために何か他のものを使用する場合は、対応するツールのマニュアル/ APIリファレンスをコンサルタントする必要があります。

はまた、あなたは、S3から直接あなたのウェブサイトを提供し、それはまだあなたのために関連するかどうHosting a Static Website on Amazon S3

+0

私はチェックし、S3のファイルのMETADATAは.js(アプリケーション/ javascript)と.css(text/css)が正しいことを示します。 私のnginx設定が間違っていますか?あなたは間違った何かを見ますか? S3から直接ホスティングすることはオプションではありません。なぜなら、DNSを管理する必要がないからです。 – psychok7

+0

S3で直接jsファイルにアクセスすると、受け取るコンテンツの種類(およびその他のヘッダー)は何ですか? – weirdan

+0

Chromeでは 'リソースはドキュメントとして解釈されますが、MIMEタイプtext/cssで転送されています。' – psychok7

0

わからない参照が、私はあなたのnginxの経由でS3から直接CSSおよびその他の静的ファイルを提供していないことをお勧めしたいことができ。つまり、あなたのindex.htmlproxy_passを提供しますが、index.html内のCSSとJSファイルへのリンクは、S3バケットをドメインとして、絶対的なものにする必要があります。

これは、ここにあなたの問題を解決するの両方、およびなど、他の理由のために良いだろう:

  • あなたはnginxのを実行しているサーバーからCPUやネットワークコストを削減します。
  • 静的ファイルリクエストごとに独自のサーバーを経由しないようにすると、サイトの処理速度が向上します。
  • S3は、暗号化、圧縮、CDNと他の多くの便利な機能を追加する機能を提供します。あなた自身のサーバーを通過する魅力的な理由がない限り、私はそれを避けるでしょう。

ユーザーは自分のドメインからサイトを表示しますが、S3ドメインから配信されるのはCSSファイルとJSファイルだけです。

+0

S3からの直接のサービス提供は必ずしも高速ではなく、RTTとTCP輻輳ウィンドウに依存します。実際に大量の静的ファイルを処理する場合、EC2インスタンスのメディアタイプで5%以上のCPUを必要とせず、静的コンテンツもキャッシュ可能です。地域間のトラフィックは、すべての単一の要求が支払われている場所で直接S3からのデータを提供することとは何ら相反しないので、同じ場所にEC2とS3のバケットを持つことをお勧めします。 – Anatoly

関連する問題