web-dev-qa-db-ja.com

Google Cloud Storageでサイト全体をホストする方法は?

Google Cloud Storageでサイト全体をホストする方法はありますか?つまり、バケットを直接トップレベルドメインにマッピングします。

例えば。 mysite.comというバケットを作成し、ユーザーがmysite.comにアクセスすると、クラウドストレージから直接コンテンツを提供しますか?

サブドメインをCNAMEする方法がわかります。 static。mysite.comですが、トップレベルをマップする方法を理解できませんドメインをバケットに追加します。

解決策はありますか?

27
rossmckegney

私もこれをやりたかった。ただし、ご存じのとおり、現時点では、Google Cloud Storageバケットをトップレベルドメイン名に直接バインドする方法はありません。

Google Cloud Storageがウェブリクエストに応答するIPアドレスは頻繁に変更されるため(インターネットの変化する状況に適応するため)、Googleはそれらのサブセットを(すぐに古くなる)のAレコードとして追加したくないあなたのウェブサイトのDNSサーバー。代わりに、Googleは制御するDNS名へのCNAMEを必要とするため、Google Cloud StorageのIPアドレスを必要なだけ変更できます。また、CNAMEはサブドメインにのみ追加でき、トップレベルドメインには追加できません。 (これは、特定のレベルにCNAMEがある場合、そのドメインのDNSサーバーはそのレベルの他のクエリに応答しないためです。ただし、トップレベルドメインは少なくともNSにも応答する必要があり、 SOAクエリ。)

現在、この問題の唯一の回避策は、別の回答で説明されているように、wwwサブドメインのCNAMEを設定し、トップレベルドメインからwwwサブドメインへのhttpレベルのリダイレクトを実行するようにDNSホスティングサービスを構成することです。 (Mostyプロバイダーはこれをサポートします。)

このソリューションのファンではない場合(私のように)、3つの可能性があります。 1つ目は、GoogleがGoogle Cloud Storageでトップレベルドメインをホストする可能性を提供するのを待つことです。ただし、最初にDNSホスティングを行う必要があります。トップレベルドメインサポートを有効にするには、Google側で(DNSホスティングサービスを構築した後)追加の作業が必要になりますが、Googleが両方の部分を制御している場合にのみ可能です。ただし、Googleがそれを提供するかどうか、いつ提供するかはわかりません。しかし、希望は持てます。

2番目のソリューションは、別の大きなプロバイダーに切り替えることです。 Amazonは、トップレベルドメインでS3の静的ウェブサイトをホストできます。しかし、そのドメインのDNSもホストしているためです。他にもあるかもしれません。すべての大規模なクラウドプロバイダーは、頻繁に変化するIPアドレスのセットからのデータを提供します。したがって、DNSもホストしていない場合は、サブドメインにCNAMEを設定する必要があります。

3番目の(少なくとも理論的には)ソリューションは、小規模なクラウドプロバイダーに切り替え、同等のサービスを提供することです。OpenStackなどで可能です。IPルーティングの設定は小規模なので、大規模なプレーヤー(Amazon 、Googleなど)を使用して、トップレベルドメインのAレコードとして設定するIPアドレスの小さなセットを提供できます。しかし、これは私の知識に基づく推測にすぎません。現在、このような小規模なクラウドストレージプロバイダーについては知りません。

(そうですね、4番目の可能性は、Webサイトを静的にホストするという考えをあきらめることです。しかし、個人的には、少なくともセキュリティと応答性の観点から、私はこのオプションが可能な限り気に入っています。)

21
Christian Hudon

これは古い質問ですが、誰かがこの投稿に遭遇した場合に備えて、私は今日同じ問題に遭遇しました。

Google Domainsは私のドメインレジストラです。これがあなたにも当てはまると仮定すると、次のように設定します。

「カスタムリソースレコード」の下...

「www」の「c.storage.googleapis.com」を指すCNAMEレコードを作成します。

「合成レコード」の下...

「サブドメイン転送」を選択します。左端の(サブドメイン)入力に「mydomain.com」と入力し、右端の(宛先URL)入力に「www.mydomain.com」と入力します。

10
bvaughn

数年になりますが、同じ問題(「ネイキッドドメイン」をGCSバケットにマッピングする)に直面している人には、これを実現する方法がいくつかあります。

1つは、「CNAME flattening」(別名ALIAS、またはANAME 記録)。例: DNSimpleNS1DynDNS Made Easy 、および Cloudflare

Cloudflareは 推奨される方法の1つ でHTTPSを介してバケットを提供することでもあり、 下り請求書にいくらかお金を節約する かもしれません。

別のオプションは、 このプロジェクト を使用して、App Engineを通じてファイルを提供することです。 SSLは無料で入手でき、「ネイキッドドメイン」で使用できます。また、リダイレクト、書き換え、カスタムヘッダーを構成できます。

2
Nuno Cruces

代替ソリューションはCloudFlare(無料)を使用することです。これにより、ゾーンApex /ネイキッドドメイン/ルートドメインでCNAMEをサポートできます。 Google Cloud Storage上の静的サイトでは問題なく機能します。

これはまだwww ...の問題を残します。

CloudFlareを使用して私のために機能するソリューションは、1です。wwwとネイキッドドメインの両方のCNAMEをc.storage.googleapis.comに設定します2. example.com/*の「ページルール」を301に設定します http ://www.example.com/ $ 1

これは私のサイト全体がGCloud Storage上にあることを意味します(「ページルール」が見つかる前だったため、以下の私の自己コメントは無視してください)

1
Alan Fuller

DNSのcname制限により、現在のところ、Google Cloud Storageからルートドメインをホストすることはできません。ルートドメインにサービスを提供するには、IPアドレスを指すDNSにエイリアスレコードが必要です。

Firebaseはこれに代わる理想的なオプションのようであり、標準のトラフィックでもほぼ無料です。また、静的サイトをホストするための手順はほとんどありません-npmを使用してfirebase cliをインストールし、いくつかのコマンドをデプロイします。次に、DNSのエイリアスレコードに追加することで、ドメインに接続できるFirebaseコンソールからIPのリストを取得できます。

https://firebase.google.com/docs/hosting

@Christian Hudonの答えは非常に明確です。私は同じことをしようとしてきました、そして私は上で議論された問題を抱えてきました。また、次のこともできます。

空(example.com)とWWW(www.example.com)の2つのCNAMEエントリを作成します。example.comとwww.example.comの2つのバケットフォルダーを作成します。ページ。

Www.example.comがソースであり、そこにフォルダー構造、画像、CSS、JavaScriptなどがあるとします。サイトは静的なので、ソースの完全なドメインを追加することで、資産。

何かのようなもの

 <link rel="stylesheet" href="http://www.example.com/css/main.css" type="text/css" />

次に、htmlページをexample.comにのみコピーします。もちろん、example.com/contact/index.htmlがある場合は、フォルダも作成する必要があります。

それは少し面倒ですが、それを機能させる唯一の方法でした。頻繁にコンテンツを変更する必要がある場合、これは理想的ではありませんが、少なくともそれは機能し、すべてがニーズに依存します。

0
Alfonso

これを行う1つの方法は、バケット(example.com)を指すGoogle Cloud CDNを作成することです。

CDNのロードバランサーには、@のAレコードとして使用できる静的IPアドレスが必要です。

0
aeharding