You need to enable JavaScript to run this app.
文档中心
文档控制台
注册
对象存储

对象存储

复制全文
下载 pdf
管理桶配置
管理静态网站(Node.js SDK)
复制全文
下载 pdf
管理静态网站(Node.js SDK)

TOS 支持托管静态网站,您可以将静态网站的所有内容存储至 TOS 存储桶,配置静态网站规则后,即可通过存储桶域名访问该网站。

设置网站配置规则

注意

  • 一个存储桶中只能创建一条静态网站托管规则。
  • 设置静态网站后,必须绑定自定义域名才能生效,具体操作,请参见绑定自定义域名
  • 出于安全合规考虑,从 2022年10月18日开始,如果您使用存储桶的默认域名访问网页类型文件(mimetype为text/html,扩展名包括 HTM、HTML、JSP、PLG、HTX、STM),Response Header中会自动加上 Content-Disposition:attachment,即从浏览器访问网页类型文件时,将不会直接预览网站,而会将网站的内容下载到本地。

示例代码

以下代码用于设置重定向所有的请求到另外一个站点。

// 导入 SDK, 当 TOS Node.JS SDK 版本小于 2.5.2 请把下方 TosClient 改成 TOS 导入
import { TosClient, TosClientError, TosServerError } from '@volcengine/tos-sdk';

// 创建客户端
const client = new TosClient({
  accessKeyId: process.env['TOS_ACCESS_KEY'],
  accessKeySecret: process.env['TOS_SECRET_KEY'],
  region: "Provide your region", // 填写 Bucket 所在地域。以华北2(北京)为例,则 "Provide your region" 填写为 cn-beijing。
  endpoint: "Provide your endpoint", // 填写域名地址
});

function handleError(error) {
  if (error instanceof TosClientError) {
    console.log('Client Err Msg:', error.message);
    console.log('Client Err Stack:', error.stack);
  } else if (error instanceof TosServerError) {
    console.log('Request ID:', error.requestId);
    console.log('Response Status Code:', error.statusCode);
    console.log('Response Header:', error.headers);
    console.log('Response Err Code:', error.code);
    console.log('Response Err Msg:', error.message);
  } else {
    console.log('unexpected exception, message: ', error);
  }
}

const bucketName = 'node-sdk-test-bucket';
async function main() {
  try {
    // 场景1 重定向所有的请求到另一个站点
    const { requestId: putWebsiteRequestId } = await client.putBucketWebsite({
      bucket: bucketName,
      redirectAllRequestsTo: {
        HostName: 'www.example.com',
        Protocol: 'http',
      },
    });
    console.log('putBucketReplication Request ID: ', putWebsiteRequestId);

    // 场景2 根据规则重定向请求
    const { requestId: putWebsiteRequestId2 } = await client.putBucketWebsite({
      bucket: bucketName,
      indexDocument: {
        Suffix: 'index.html',
      },
      errorDocument: {
        Key: 'error.html',
      },
      // 前缀匹配,获取重定向结果
      routingRules: [
        {
          // 重定向规则的条件配置
          Condition: {
            // 指定重定向规则的对象键前缀匹配条件
            KeyPrefixEquals: 'prefix',
            // 指定重定向规则的错误码匹配条件
            HttpErrorCodeReturnedEquals: 403,
          },
          // 重定向规则的具体重定向目标配置
          Redirect: {
            // 指定重定向规则的目标协议
            Protocol: 'https',
            HostName: 'www.redirect.com',
          },
        },
      ],
    });
    console.log('putBucketReplication Request ID: ', putWebsiteRequestId2);
  } catch (error) {
    handleError(error);
  }
}

main();

获取网站配置规则

注意

要获取桶的网站配置规则,默认您必须为桶所有者。

示例代码

以下代码用于获取桶的网站配置规则。

// 导入 SDK, 当 TOS Node.JS SDK 版本小于 2.5.2 请把下方 TosClient 改成 TOS 导入
import { TosClient, TosClientError, TosServerError } from '@volcengine/tos-sdk';

// 创建客户端
const client = new TosClient({
  accessKeyId: process.env['TOS_ACCESS_KEY'],
  accessKeySecret: process.env['TOS_SECRET_KEY'],
  region: "Provide your region", // 填写 Bucket 所在地域。以华北2(北京)为例,则 "Provide your region" 填写为 cn-beijing。
  endpoint: "Provide your endpoint", // 填写域名地址
});

function handleError(error) {
  if (error instanceof TosClientError) {
    console.log('Client Err Msg:', error.message);
    console.log('Client Err Stack:', error.stack);
  } else if (error instanceof TosServerError) {
    console.log('Request ID:', error.requestId);
    console.log('Response Status Code:', error.statusCode);
    console.log('Response Header:', error.headers);
    console.log('Response Err Code:', error.code);
    console.log('Response Err Msg:', error.message);
  } else {
    console.log('unexpected exception, message: ', error);
  }
}

const bucketName = 'node-sdk-test-bucket';
async function main() {
  try {
    const { data, requestId: getWebsiteRequestId } = await client.getBucketWebsite({
      bucket: bucketName,
    });
    console.log('getBucketWebsite Request ID: ', getWebsiteRequestId);

    if (data.RedirectAllRequestsTo != null) {
      console.log('getBucketWebsite RedirectAllRequestsTo HostName:', data.RedirectAllRequestsTo.HostName);
      console.log('getBucketWebsite RedirectAllRequestsTo Protocol:', data.RedirectAllRequestsTo.Protocol);
    }

    if (data.IndexDocument != null) {
      console.log('getBucketWebsite IndexDocument ForbiddenSubDir:', data.IndexDocument.ForbiddenSubDir);
      console.log('getBucketWebsite IndexDocument Suffix:', data.IndexDocument.Suffix);
    }

    if (data.ErrorDocument != null) {
      console.log('getBucketWebsite ErrorDocument Key:', data.ErrorDocument.Key);
    }

    for (const rule of data.RoutingRules || []) {
      console.log('getBucketWebsite RoutingRules Rule Condition HttpErrorCodeReturnedEquals:', rule.Condition.HttpErrorCodeReturnedEquals);
      console.log('getBucketWebsite RoutingRules Rule Condition KeyPrefixEquals:', rule.Condition.KeyPrefixEquals);
      console.log('getBucketWebsite RoutingRules Rule Redirect HostName:', rule.Redirect.HostName);
      console.log('getBucketWebsite RoutingRules Rule Redirect Protocol:', rule.Redirect.Protocol);
      console.log('getBucketWebsite RoutingRules Rule Redirect ReplaceKeyWith:', rule.Redirect.ReplaceKeyWith);
      console.log('getBucketWebsite RoutingRules Rule Redirect ReplaceKeyPrefixWith:', rule.Redirect.ReplaceKeyPrefixWith);
      console.log('getBucketWebsite RoutingRules Rule Redirect HttpRedirectCode:', rule.Redirect.HttpRedirectCode);
    }
  } catch (error) {
    handleError(error);
  }
}

main();

删除网站配置规则

注意

要删除桶的网站配置规则,默认您必须为桶所有者。

示例代码

以下代码用于删除桶的网站配置规则。

// 导入 SDK, 当 TOS Node.JS SDK 版本小于 2.5.2 请把下方 TosClient 改成 TOS 导入
import { TosClient, TosClientError, TosServerError } from '@volcengine/tos-sdk';

// 创建客户端
const client = new TosClient({
  accessKeyId: process.env['TOS_ACCESS_KEY'],
  accessKeySecret: process.env['TOS_SECRET_KEY'],
  region: "Provide your region", // 填写 Bucket 所在地域。以华北2(北京)为例,则 "Provide your region" 填写为 cn-beijing。
  endpoint: "Provide your endpoint", // 填写域名地址
});

function handleError(error) {
  if (error instanceof TosClientError) {
    console.log('Client Err Msg:', error.message);
    console.log('Client Err Stack:', error.stack);
  } else if (error instanceof TosServerError) {
    console.log('Request ID:', error.requestId);
    console.log('Response Status Code:', error.statusCode);
    console.log('Response Header:', error.headers);
    console.log('Response Err Code:', error.code);
    console.log('Response Err Msg:', error.message);
  } else {
    console.log('unexpected exception, message: ', error);
  }
}

const bucketName = 'node-sdk-test-bucket';
async function main() {
  try {
    const { requestId: deleteWebsiteRquestId } = await client.deleteBucketWebsite({
      bucket: bucketName,
    });
    console.log('deleteBucketWebsite Request ID: ', deleteWebsiteRquestId);
  } catch (error) {
    handleError(error);
  }
}

main();

相关文档

关于设置静态网站配置的更多信息,请参见设置静态网站

最近更新时间:2024.02.04 18:31:09
这个页面对您有帮助吗?
有用
有用
无用
无用