当通过 Nginx 代理使用 Java SDK 调用 OSS 接口时,需正确配置 SDK 的代理参数,同时确保 Nginx 代理不会自动添加或覆盖关键请求头(如 Content-Type等),否则会导致服务端返回 403 错误。本文介绍如何正确配置 Nginx 反向代理规则,以及如何初始化阿里云 OSS Java SDK。
配置说明
Nginx代理配置
推荐在/etc/nginx/conf.d/目录下创建独立的.conf配置文件(如 oss-proxy.conf),编辑代理规则并保存。
server {
listen 80;
server_name 服务器ip;
client_max_body_size 100M;
location / {
# 请按实际修改bucketName。
proxy_pass http://bucketName.oss-cn-hangzhou.aliyuncs.com;
proxy_set_header Host bucketName.oss-cn-hangzhou.aliyuncs.com;
}
}配置完成后,请先运行nginx -t验证语法,再执行nginx -s reload命令重新加载配置,使更改生效。
Java SDK初始化配置
初始化客户端时,需通过setProxyHost、setProxyPort方法设置代理服务器地址和端口。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
//DefaultCredentialProvider credentialsProvider = CredentialsProviderFactory.newDefaultCredentialProvider("ak","sk");
// 填写Bucket名称。
String bucketName = "bucketName";
// 填写Object完整路径,完整路径中不能包含Bucket名称。
String objectName = "test/1.txt";
String region = "cn-hangzhou";
// 创建OSSClient实例。
//OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
// 开启二级域名访问OSS,默认不开启。OSS Java SDK 2.1.2及之前的版本需要设置此值,OSS Java SDK 2.1.2及之后的版本会自动检测到IP地址,不需要再设置此值。
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
clientBuilderConfiguration.setProxyHost("代理服务ip");
clientBuilderConfiguration.setProxyPort(80);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();结果验证
配置完成后,通过Java SDK上传文件到OSS。文件上传成功表示配置正确。

相关文档
该文章对您有帮助吗?