Beispiele und Tipps für statische Websites

Auf dieser Seite finden Sie Beispiele und Tipps zur Verwendung von Buckets für das Hosten einer statischen Website.

Spezialseiten

Indexseiten

Eine Indexseite (auch als Webserververzeichnisindex bezeichnet) ist eine Datei, die Besuchern bereitgestellt wird, wenn diese eine URL ohne zugehörige Datei anfordern. Wenn Sie das Attribut MainPageSuffix zuweisen, sucht Cloud Storage nach einer Datei mit diesem Namen, deren Präfix der vom Besucher angeforderten URL entspricht.

Beispiel: Sie legen das MainPageSuffix Ihrer statischen Website auf index.html fest. Außerdem ist in Ihrem Bucket www.example.com keine Datei mit dem Namen directory vorhanden. Wenn ein Nutzer in dieser Situation die URL http://www.example.com/directory anfordert, versucht Cloud Storage, die Datei www.example.com/directory/index.html bereitzustellen. Ist diese Datei ebenfalls nicht vorhanden, gibt Cloud Storage eine Fehlerseite zurück.

Das MainPageSuffix steuert auch die Datei, die bereitgestellt wird, wenn Nutzer die Top-Level-Website anfordern. Wenn das oben genannte Beispiel weitergeführt wird und ein Nutzer http://www.example.com anfordert, versucht Cloud Storage, die Datei www.example.com/index.html bereitzustellen.

Wenn Sie versuchen, auf eine URL mit einem abschließenden Schrägstrich wie http://www.example.com/dir/ zuzugreifen, lesen Sie die Informationen unter Fehlerbehebung.

Fehlerseite

Die Fehlerseite ist die Datei, die an Besucher Ihrer statischen Website zurückgegeben wird, die eine URL anfordern, die keiner vorhandenen Datei entspricht. Wenn Sie ein MainPageSuffix zugewiesen haben, gibt Cloud Storage die Fehlerseite nur dann zurück, wenn weder eine Datei mit dem angeforderten Namen noch eine anwendbare Indexseite vorhanden ist.

Wenn eine Fehlerseite zurückgegeben wird, lautet der HTTP-Antwortcode 404. Das Attribut, das steuert, welche Datei als Fehlerseite dient, ist NotFoundPage. Wenn Sie NotFoundPage nicht festlegen, erhalten Nutzer eine generische Fehlerseite.

Website-Konfigurationsbeispiele

Bucket mit drei Objekten

Beispiel: Ein Bucket mit dem Namen www.example.com wurde als Website mit den folgenden Einstellungen und Dateien konfiguriert:

  • MainPageSuffix = "index.html"
  • NotFoundPage = "404.html"
  • Der Bucket enthält drei öffentlich freigegebene Objekte: "index.html", "404.html" und "dir/index.html".

Die folgende Tabelle zeigt den bereitgestellten Inhalt für ausgewählte URLs:

Angeforderte URL Bereitgestellter Inhalt HTTP-Antwortcode
http://www.example.com
http://www.example.com/
http://www.example.com/index.html
Das Objekt "index.html" 200
http://www.example.com/hello Das Objekt "404.html" 404
http://www.example.com/dir/index.html Das Objekt "dir/index.html" 200
http://www.example.com/dir Das Objekt "dir/index.html" 301
http://www.example.com/dir/ Das Objekt "dir/index.html", unter der Annahme, dass kein Objekt mit null Byte für /dir/ vorhanden ist. 200
Ein leeres Objekt mit null Byte, wenn es für /dir/ vorhanden ist. Informationen zum Entfernen dieses Null-Byte-Objekts finden Sie im Abschnitt zur Fehlerbehebung. 301

Bucket mit zwei Objekten

Beispiel: Ein Bucket mit dem Namen www.example.com wurde als Website mit den folgenden Einstellungen und Dateien konfiguriert:

  • MainPageSuffix = "main.html"
  • NotFoundPage = "404.html"
  • Der Bucket enthält zwei öffentlich freigegebene Objekte: "main.html" und "404.html".

Die folgende Tabelle zeigt den bereitgestellten Inhalt für ausgewählte URLs:

Angeforderte URL Bereitgestellter Inhalt HTTP-Antwortcode
http://www.example.com
http://www.example.com/
Das Objekt "main.html" 200
http://www.example.com/index.html Das Objekt "404.html" 404

Wenn ein Objekt öffentlich freigegeben ist, können Sie es auch über folgende URL anzeigen:

http://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME

Die URL für ein index.html-Objekt wäre beispielsweise:

http://storage.googleapis.com/www.example.com/index.html

Weitere Informationen zum Arbeiten mit öffentlich freigegebenen Daten finden Sie unter Auf öffentliche Daten zugreifen.

Tipps für die Arbeit mit einem als Website konfigurierten Bucket

Beachten Sie die folgenden Tipps, wenn Sie einen Bucket verwenden, um eine statische Website zu hosten.

Subdomains hinzufügen

Angenommen, Sie möchten auch Inhalte unter test.example.com aus einem anderen Bucket als dem bereitstellen, der Inhalt unter www.example.com bereitstellt. Anleitung:

  1. Erstellen Sie einen neuen Bucket mit dem Namen test.example.com. Da Sie die Domain example.com bereits überprüft haben, können Sie Buckets erstellen, um Subdomains ohne zusätzliche Überprüfung zu unterstützen.

  2. Wenn Sie Ihre Inhalte gemäß der Anleitung unter Statische Website hosten über HTTPS bereitgestellt haben, bearbeiten Sie in der Cloud Console den Load-Balancer so:

    1. Erstellen Sie für die Back-End-Konfiguration einen neuen Back-End-Bucket test-bucket. Wählen Sie dazu den Bucket test.example.com aus.
    2. Fügen Sie unter Host- und Pfadregeln eine neue Regel hinzu:
      Hosts                  Paths     Backends
      test.example.com       /*        test-bucket
      
    3. Fügen Sie für die Front-End-Konfiguration eine neue Front-End-IP-Adresse und einen neuen Front-End-Port hinzu, die dieselben Werte wie in der ersten Konfiguration haben, mit folgenden Ausnahmen:

      • Erstellen und reservieren Sie für IP-Adresse eine neue IP-Adresse.
      • Erstellen Sie unter Zertifikat ein neues SSL-Zertifikat für test.example.com.
  3. Nachdem Sie den Load-Balancer aktualisiert haben, fügen Sie Ihrem Domainregistrierungsdienst einen neuen A-Eintrag hinzu. Verwenden Sie dazu die IP-Adresse der neuen Front-End-Konfiguration:

    NAME                  TYPE     DATA
    test                  A        IP_ADDRESS
    

Cache-Parameter festlegen

Sie können steuern, wie oder ob die Inhalte Ihrer Website im Cache gespeichert werden, indem Sie die Cache-Control-Metadaten konfigurieren. In der Regel sollten Sie Cachesteuerungs-Metadaten nur für Objekte festlegen, die für alle anonymen Nutzer zugänglich sind – eine Voraussetzung für jedes Objekt, das als Teil einer statischen Website aus einem Cloud Storage-Bucket bereitgestellt wird.

Cloud Storage wendet auf Objekte, die für alle anonymen Nutzer zugänglich sind, eine Cachesteuerungseinstellung von 3.600 Sekunden an, sofern Sie keine eigenen Einstellungen festlegen. Eine Anleitung zum Festlegen von Objektmetadaten wie Cache-Control finden Sie unter Metadaten anzeigen und bearbeiten.

API-Verhalten

Die Website-Konfigurationen MainPageSuffix und NotFoundPage werden nur für Anfragen verwendet, die über den Endpunkt CNAME oder über Cloud Load Balancing an Cloud Storage gesendet werden. Eine Anfrage an www.example.com zeigt beispielsweise die Indexseite, eine entsprechende Anfrage an storage.googleapis.com/www.example.com jedoch nicht.

Deshalb ändert sich das API-Verhalten bei Anfragen an Cloud Storage-Domains wie storage.googleapis.com/www.example.com nicht. So können Sie beispielsweise weiter Objekte im Bucket www.example.com auflisten wie bei jedem anderen Bucket auch. Im Fall des Buckets www.example.com erhalten Sie eine Objektliste, in der 404.html und index.html enthalten sind.

Statische Inhalte für eine dynamische Website hosten

Sie können Cloud Storage verwenden, um statische Inhalte für eine dynamische Website zu hosten, die z. B. in Google App Engine oder in Google Compute Engine gehostet wird. Das Hosten von statischen Inhalten wie Bildern oder JavaScript-Dateien in einem Bucket bietet unter anderem folgende Vorteile:

  • Cloud Storage verhält sich im Grunde wie ein Content Delivery Network (CDN), ohne dass Sie dafür etwas tun müssen, da öffentlich lesbare Objekte standardmäßig im Cloud Storage-Netzwerk im Cache gespeichert werden.

  • Die Bandbreitengebühren für den Zugriff auf Inhalte sind mit Cloud Storage in der Regel niedriger.

  • Durch die Bereitstellung der statischen Inhalte über Cloud Storage wird die Auslastung Ihres Webservers verringert.

Darüber hinaus können Sie Anfrageheader zur Cachesteuerung verwenden, um das Caching für öffentlich lesbare statische Inhalte zu steuern. Sie können das Caching z. B. deaktivieren oder die Lebensdauer des Cache festlegen. Weitere Informationen finden Sie unter Cacheparameter festlegen.

Wenn Sie statische Assets für eine dynamische Website hosten, müssen Sie keine DNS-Einträge erstellen und nicht wie bei einer statischen Website auf einen Bucket oder Load-Balancer verweisen. Sie können beispielsweise einen Bucket mit dem Namen www_example_com_assets haben und die darin enthaltenen entsprechenden Assets als öffentlich freigegeben konfigurieren. Danach können Sie über die Cloud Storage-Domain auf diese Assets zugreifen. Angenommen, die JavaScript-Datei library.js im Bucket www_example_com_assets ist öffentlich freigegeben. Sie können sie dann als http://storage.googleapis.com/www_example_com_assets/library.js aufrufen.

Kosten im Blick behalten

Wenn Sie zur Bereitstellung von Inhalten einen als statische Website konfigurierten Bucket verwenden oder einen Bucket verwenden, um statische Inhalte für eine außerhalb von Cloud Storage gehostete dynamische Website bereitzustellen, sollten Sie die Kosten im Auge behalten, die für das Projekt anfallen, das den Bucket enthält. Die Bereitstellung von Inhalten verursacht Cloud-Storage-Kosten für das Speichern des Inhalts, die Verwendung des Netzwerks und das Ausführen von Abrufvorgängen. Weitere Informationen finden Sie auf der Seite Google Cloud Storage – Preise.

Wenn Sie HTTPS mit HTTP(S)-Load-Balancing einrichten, können Netzwerkgebühren anfallen. Weitere Informationen finden Sie unter Netzwerkpreise.

Das einfache Preisbeispiel auf der Cloud Storage-Preisseite kann als Näherung für den Anwendungsfall einer statischen Website mit geringem Traffic betrachtet werden. Mit dem Preisrechner können Sie die Kosten der geplanten Nutzung schätzen.

Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Wenn Sie bereits Cloud Platform-Nutzer sind, können Sie auf der Abrechnungsseite eine detaillierte Übersicht Ihrer Projektkosten aufrufen.

Fehlerbehebung

Informationen zu häufigen Problemen bei der Verwendung eines Buckets, der zum Bereitstellen von Inhalten statischer Websites konfiguriert ist, finden Sie unter Fehlerbehebung.

Weitere Informationen