对象存储 TOS 通常通过域名进行访问,其服务地址动态变化,不提供固定的 IP 地址。某些行业可能存在安全合规要求,需要通过固定 IP 访问对象存储 TOS。为满足此类需求,您可以在 ECS 实例配置 Nginx 反向代理服务器,通过访问 ECS 实例公网 IP 的 80 端口来访问 TOS 存储桶中的文件,实现通过固定 IP 访问对象存储 TOS 内的资源。本文介绍使用 ECS 实例反向代理 TOS 的方案优势、操作步骤。
使用 ECS 实例反向代理 TOS 时,ECS 不仅为对象存储提供一个固定 IP 访问入口,同时其强大安全能力,增强了对象存储 TOS 的安全性,说明如下:
已创建 ECS 实例,具体操作,请参见通过向导购买实例。
说明
本文以 CentOS Stream release 9 64 位系统的 ECS 实例为例,介绍如何使用 ECS 实例反向代理 TOS。
Nginx 默认使用 80 端口进行通信,您需要在 ECS 实例的安全组中开放 80 端口,允许用户访问 TCP 80 端口。
登录云服务器控制台。
在左侧导航栏,选择实例与镜像 > 实例。
在实例页面,单击目标实例的名称。
在实例详情页面,单击安全组页签。
单击已关联安全组区域下的配置规则。
在入向规则页签下,单击添加规则。
在添加入方向规则对话框,配置如下参数。
参数 | 说明 |
|---|---|
优先级 | 安全组规则的优先级。 |
策略 | 设置为允许。 |
协议类型 | 设置为 TCP。 |
端口范围 | 设置为 80 端口。 说明 如果您需要使用 HTTPS 协议访问 ECS 实例,则您需要设置端口范围为 443。 |
源地址 | 设置允许访问的网络地址段,用于控制哪些 IP 地址可以通过 80 端口访问 ECS 实例。 |
完成配置后,单击确定。
执行以下命令,安装 Nginx。
sudo yum install -y nginx
执行以下命令,打开 Nginx 的配置文件 nginx.conf。
sudo vi /etc/nginx/nginx.conf
修改配置文件 nginx.conf 的 HTTP 模块,完成配置后,保存并退出。
说明
error_log /var/log/nginx/error.log; events { worker_connections 1024; # 当前设置的 1024 值相对保守,在生产环境中请根据业务需求灵活调整该参数。 } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; server { listen 80; listen [::]:80; location / { proxy_pass http://bucketname.tos-cn-guangzhou.volces.com; proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_buffering off; proxy_request_buffering off; } } }
根据实际业务情况,修改 nginx.conf 文件中以下参数:
参数 | 说明 |
|---|---|
worker_connections | 最大并发连接数,您需要根据实际业务需求调整该值。 |
proxy_pass | 被代理的服务器地址,此处需要设置为 TOS 存储桶的访问域名。说明如下:
说明 您可以在存储桶概览页面获取存储桶域名,具体操作,请参见存储桶概览。 |
执行以下命令,测试 Nginx 配置文件 nginx.conf 的状态。
nginx -t
返回以下内容,说明 nginx.conf 文件状态正常。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
执行以下命令,重启 Nginx 服务器,使配置生效。
systemctl restart nginx
本文以 Linux 系统为例,介绍如何在客户端配置 DNS 解析。
执行以下命令,打开 hosts 文件。
sudo vi /etc/hosts
在文件末尾添加以下内容,将 TOS 域名解析到 ECS 实例的公网 IP 地址。
<公网 IP 地址> <存储桶访问域名>
示例如下:
118.125.1**.** bucketname.tos-cn-guangzhou.volces.com
安装 tosutil ,具体操作,请参见下载与安装。
执行以下命令,为 tosutil 添加可运行全权限。
chmod +x tosutil
执行以下命令,使用 config命令初始化配置 tosutil。
说明
如果您使用 HTTPS 协议访问 ECS 实例,初始化配置 tosutil 时,需要将 -e 参数设置为 https://<endpoint>。
# -i 参数指定账号/子账号的 access key # -k 参数指定账号/子账号的 secret key # -e 参数指定访问的 endpoint # -re 参数指定访问的 region ./tosutil config -i <access key> -k <secret key> -e http://<endpoint> -re <region>
示例如下:
./tosutil config -i AKLTN2FmOGM4Z********* -k WXpkbVlXTm1OVGs1T0RabE******** -e http://tos-cn-guangzhou.volces.com -re cn-guangzhou
执行以下命令,上传文件到存储桶。
./tosutil cp span.log tos://bucketname/span.log
在 ECS 实例,执行以下命令,查看 Nginx 访问日志。
tail -f /var/log/nginx/access.log
在访问日志中可以看到上传文件的请求转发到 Nginx 上,说明使用 ECS 实例反向代理 TOS 成功。