redhat官方文档网址:
https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/2/html-single/object_gateway_guide_for_red_hat_enterprise_linux/#assumptions
翻译部分为原文2.9: Static Web Hosting
传统的web主机有时为每个网站建立一个web服务器,当内容是静态的时候,它可以有效地利用资源。ceph对象网关可以在S3 buckets中托管静态站点——也就是说不用像PHP,servlets,数据库,nodejs,一样。这种方法比为每个站点设置虚拟机都要经济的多。
2.9.1设想:
静态web托管至少需呀一个运行Ceph存储集群,以及至少两个静态web站点的Ceph对象网关实例。
请参阅haproxy/keepalion配置,了解有关haproxy/keepalion的详细信息。
注意:
Red Hat 不支持使用Ceph对象网关实例来支持标准的S3/swift api和静态web主机。
2.9.2需求:
静态web托管功能使用它自己的API,因此在S3桶中配置一个网关使用静态web站点需求如下:
1.S3静态web主机使用Ceph对象网关实例,它们是独立的,与标准的S3/swift API用例使用的实例不同。
2.托管静态web站点的网关实例应该从标准的S3/swift API网关实例中分离出独立的、非重复的域名。
3.应该使用独立公开的IP地址。
4.网关实例托管S3静态web站点的负载均衡,如果需要终止SSL则使用haproxy/keepalived。
2.9.3设置网关
要启用静态web主机的网关,编辑Ceph配置文件并添加以下配置
[client.radosgw.<STATIC-SITE-HOSTNAME>] ... rgw_enable_static_website = true rgw_enable_apis = s3website rgw_dns_name = objects-zonegroup.domain.com rgw_dns_s3website_name = objects-website-zonegroup.domain.com rgw_resolve_cname = true ...
rgw_enable_static_website的站点设置必须正确,rgw_enable_apis的设置必须设置S3 api。
rgw_dns_name和rgw_dns_s3website_name需配置正确的域名。如果站点使用规范的名称扩展,那么将rgw_resolve_cname设置为true。
objects-zonegroup.domain.com. IN A 192.0.2.10 objects-zonegroup.domain.com. IN AAAA 2001:DB8::192:0:2:10 *.objects-zonegroup.domain.com. IN CNAME objects-zonegroup.domain.com. objects-website-zonegroup.domain.com. IN A 192.0.2.20 objects-website-zonegroup.domain.com. IN AAAA 2001:DB8::192:0:2:20
注: rgw_dns_name 和 rgw_dns_s3website_name 的名称不能一样
2.9.4 配置DNS
下面是虚拟的DNS配置实例,前两行使用S3接口指定网关实例的域,分别指向IPv4、IPv6地址。
第三行为扩展的S3bucket提供了一个CNAME设置。四、五行分别使用S3网站接口指定网关实例的域,分别指向IPv4、IPv6的地址。
注意:前两行的IP和4、5行的不同
如在多站点配置中使用Ceph对象存储网关,则考虑使用路由解决通信路由到客户端最近的网关。
Amazon Web Service(AWS)需要静态web主机bucket来匹配主机名。Ceph提供了几种不同的配置DNS的方式,代理需要有匹配证书,HTTPS才能工作。
子域名上的主机名
要使用AWS风格的S3子域,可以在DNS条目中使用通配符,并可以将请求重定向到任何bucket。
DNS的配置应该如下:
*.objects-website-zonegroup.domain.com. IN CNAME objects-website-zonegroup.domain.com.
用以下方式定义bucket的名称
http://bucket1.objects-website-zonegroup.domain.com
bucket的名为bucket1
主机名不匹配的bucket
ceph的独特之处在于,支持将域名映射到bucket中,而不需要在请求中包含bucket名称。使用一个域名访问一个bucket,将域名映射到bucket名。DNS配置如下:
www.example.com. IN CNAME bucket2.objects-website-zonegroup.domain.com.
bucket名为bucket2
用以下方式访问这个bucket
http://www.example.com
有CNAME存储的主机名
AWS通常需要使用bucket条目来匹配域名。要为CNAME的静态web主机配置DNS,配置如下:
www.example.com. IN CNAME www.example.com.objects-website-zonegroup.domain.com.
以如下方式访问bucket:
http://www.example.com
没有CNAME的主机名
用DNS名称包含其他非cname记录,如SOA、NS、MX、TXT,DNS记录必须将域名直接映射到IP地址,例如:
www.example.com. IN A 192.0.2.20 www.example.com. IN AAAA 2001:DB8::192:0:2:20
访问方式:
http://www.example.com
2.9.5创建一个网站
创建一个静态网站,包含如下步骤:
1.创建一个bucket,bucket名称可以与站点的域名相同。例如,mysite.com可以有一个名为mysite.com的bucket。这对于AWS是必须的,但对于ceph不是不虚的,详情参考DNS设置。
2.将静态网站的内容上传到bucket中,内容可能包括HTML、CSS、客户端JavaScript、图像、音频/视频和其他可下载的文件。一个网站必须有一个index.html,和error.html文件。
3.验证网站的内容,这一点,只有bucket的创建者才能访问内容。
4.可以对文件的权限进行设置,以便读取。