Node.js静态网站托管(镜像回源)

您可以将存储空间(Bucket)设置为静态网站托管模式并设置镜像回源的跳转规则(RoutingRule)。静态网站托管模式配置生效后,访问网站相当于访问Bucket,并且能够自动跳转至指定的索引页面和错误页面。镜像回源的跳转规则配置生效后,可用于数据无缝迁移到OSS的场景。

静态网站托管

静态网站是指所有的网页都由静态内容构成,包括客户端执行的脚本(例如JavaScript)。您可以通过静态网站托管功能将您的静态网站托管到Bucket,并使用Bucket的访问域名访问这个网站。

  • 设置静态网站托管

    以下代码用于设置静态网站托管:

    const OSS = require('ali-oss')
    
    const client = new OSS({
      // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
      region: 'yourRegion',
      // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
      accessKeyId: process.env.OSS_ACCESS_KEY_ID,
      accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
      authorizationV4: true,
      // yourBucketName填写Bucket名称。
      bucket: 'yourBucketName',
    });
    
    // 设置静态网站托管。
    async function putBucketWebsite () {
      try {
        // 填写Bucket名称,例如examplebucket。    
        const result = await client.putBucketWebsite('examplebucket', {
        // 设置静态网站托管的默认主页。
        index: 'index.html',
        // 设置静态网站托管的默认404页。
        error: 'error.html'
      });
       console.log(result);
      } catch (e) {
        console.log(e);
      }
    }
    
    putBucketWebsite();            
  • 查看静态网站托管配置

    以下代码用于查看静态网站托管配置:

    const OSS = require('ali-oss')
    
    const client = new OSS({
      // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
      region: 'yourRegion',
      // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
      accessKeyId: process.env.OSS_ACCESS_KEY_ID,
      accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
      authorizationV4: true,
      // yourBucketName填写Bucket名称。
      bucket: 'yourBucketName',
    });
    
    // 查看静态网站托管配置的默认首页和默认404页。
    async function getBucketWebsite () {
      try {
        // 填写Bucket名称,例如examplebucket。
        const result = await client.getBucketWebsite('examplebucket');
        console.log(result);
      } catch (e) {
        console.log(e);
      }
    }
    
    getBucketWebsite();            
  • 删除静态网站托管配置

    以下代码用于删除静态网站托管配置:

    const OSS = require('ali-oss')
    
    const client = new OSS({
      // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
      region: 'yourRegion',
      // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
      accessKeyId: process.env.OSS_ACCESS_KEY_ID,
      accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
      authorizationV4: true,
      // yourBucketName填写Bucket名称。
      bucket: 'yourBucketName',
    });
    
    // 删除静态网站托管配置。
    async function deleteBucketWebsite() {
      try {
        // 填写Bucket名称,例如examplebucket。
        const result = await client.deleteBucketWebsite('examplebucket');
        console.log(result);
      } catch (e) {
        console.log(e);
      }
    }
    
    deleteBucketWebsite();            

镜像回源

镜像回源主要用于数据无缝迁移到OSS的场景。例如某服务已经在用户建立的源站或者在其他云产品上运行,现因业务发展,需要将服务迁移至OSS,迁移时需保证服务的正常运行。您可以在迁移过程中使用镜像回源规则获取未迁移至OSS的部分数据,保证服务的正常运行。

  • 设置镜像回源

    例如,当请求者访问目标Bucket中不存在的文件时,可以通过指定回源条件和回源地址,从源站中获取目标文件。例如您在华东1(杭州)有名为examplebucket的Bucket,您希望请求者访问Bucket根目录下examplefolder目录中不存在的文件时,可以从https://www.example.com/站点的examplefolder目录获取目标文件。

    以下代码用于设置符合上述场景的镜像回源规则:

    const OSS = require('ali-oss')
    constpath=require("path")
    
    const client = new OSS({
      // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
      region: 'yourRegion',
      // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
      accessKeyId: process.env.OSS_ACCESS_KEY_ID,
      accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
      authorizationV4: true,
      // yourBucketName填写Bucket名称。
      bucket: 'yourBucketName',
    });
    
    async function putBucketWebsite() {
      try {
        // 填写Bucket名称,例如examplebucket。
        const result = await client.putBucketWebsite("examplebucket", {
          // 设置静态网站托管的默认主页。
          index: "index.html",
          // 设置静态网站托管的默认404页。
          error: "error.html",
          // 指定访问子目录时,是否支持转到子目录下的默认主页。
          // supportSubDir:true ,
          // 指定设置默认主页后,访问以非正斜线(/)结尾的Object,且该Object不存在时的行为。仅在SupportSubDir设置为true时生效。
          // type: 0 ,
          routingRules: [
             { RuleNumber: 1,
                 // 只有匹配此前缀的Object才能匹配此规则。
                 Condition: { KeyPrefixEquals: "examplefolder/" ,
                              // 访问指定Object时,返回status 404才能匹配此规则。
                              HttpErrorCodeReturnedEquals: 404
                            },
                 // 指定跳转的类型。
                 Redirect: { RedirectType: "Mirror",
                             // 指定执行跳转或者镜像回源规则时,是否携带请求参数。
                             PassQueryString: true,
                             // 指定镜像回源的源站地址。
                             MirrorURL: 'http://example.com/',                         
                             // 与PassQueryString作用相同,优先级高于PassQueryString。只有设置RedirectType为Mirror时才生效。
                             MirrorPassQueryString:true,
                             // 如果镜像回源获取的结果为3xx,是否继续跳转到指定的Location获取数据。只有设置RedirectType为Mirror时才生效。此处设置此项为true,表明OSS会继续请求Location对应的地址。
                             MirrorFollowRedirect:true,
                             // 是否检查回源body的MD5。
                             MirrorCheckMd5:false,
                             // 指定镜像回源时携带的Header。
                             // 是否透传除以下Header之外的其他Header到源站。
                             MirrorHeaders:{ PassAll: true,
                                             // 将Pass中指定的Header透传到源站。
                                             Pass:'myheader-key1',
                                             Pass:'myheader-key2',
                                             // 禁止将Remove中指定的Header透传到源站。
                                             Remove:'myheader-key3',
                                             Remove:'myheader-key4'}
                            }}
           ] 
        });
        console.log(result);
      } catch (e) {
        console.log(e);
      }
    }
    
    putBucketWebsite();
  • 获取镜像回源配置

    以下代码用于获取镜像回源配置:

    const OSS = require('ali-oss')
    constpath=require("path")
    
    const client = new OSS({
      // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
      region: 'yourRegion',
      // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
      accessKeyId: process.env.OSS_ACCESS_KEY_ID,
      accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
      authorizationV4: true,
      // yourBucketName填写Bucket名称。
      bucket: 'yourBucketName',
    });
    
    // 获取镜像回源配置。
    async function getBucketWebsite () {
      try {
        // 填写Bucket名称,例如examplebucket。
        const result = await client.getBucketWebsite('examplebucket');
        console.log(result);
      } catch (e) {
        console.log(e);
      }
    }
    
    getBucketWebsite();            
  • 删除镜像回源配置

    以下代码用于删除镜像回源配置:

    const OSS = require('ali-oss')
    constpath=require("path")
    
    const client = new OSS({
      // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
      region: 'yourRegion',
      // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
      accessKeyId: process.env.OSS_ACCESS_KEY_ID,
      accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
      authorizationV4: true,
      // yourBucketName填写Bucket名称。
      bucket: 'yourBucketName',
    });
    
    // 删除镜像回源配置。
    async function deleteBucketWebsite() {
      try {
        // 填写Bucket名称,例如examplebucket。
        const result = await client.deleteBucketWebsite('examplebucket');
        console.log(result);
      } catch (e) {
        console.log(e);
      }
    }
    
    deleteBucketWebsite();            

相关文档

  • 关于设置静态网站托管或者镜像回源的API接口说明,请参见PutBucketWebsite

  • 关于获取静态网站托管或者镜像回源的API接口说明,请参见GetBucketWebsite

  • 关于删除静态网站托管或者镜像回源的API接口说明,请参见DeleteBucketWebsite