服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Nginx - 配置Nginx访问阿里云OSS资源踩坑之路

配置Nginx访问阿里云OSS资源踩坑之路

2024-04-09 15:46运维笔谈 Nginx

Nginx到OSS的代理工作正常,但请求的文件在OSS中不存在或路径不正确。仔细检查了下路径是对的,这说明我们Nginx写法有问题,到OSS那边的确是没有 static/test/1.png 这个文件,所以我们需要在Nginx里加个配置去掉 static 前缀。

朋友那边有个需求要在阿里云OSS上绑定一个自定义的域名,但是此域名已经在DNS解析那边有了A记录,OSS绑定域名需要在DNS解析那边加个CNAME,这样就冲突了。但是朋友那边就一定要使用这个域名,想了想也只能通过Nginx的一个二级目录来反向代理这个OSS了。

话不多说,我先配置了如下:

http {
    # ... 其他全局配置 ...


    upstream oss_backend {
        server <OSS_ENDPOINT>; # OSS访问内网域名
        keepalive 32; # 保持连接数,可按需调整
    }


    server {
        listen 80; # 或者 listen 443 ssl; 如果使用HTTPS
        server_name apitest.xxxx.com; # 域名


        location /static {
            proxy_pass http://oss_backend; # 代理到OSS
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

很常用的一个反向代理oss,然而当我?问对应oss里的静态资源的时候,错误提示:

<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<RequestId>613A63CA4771F3ddds602364</RequestId>
<HostId>apitest.xxxx.com</HostId>
<Key>static/test/1.png</Key>
<EC>0026-0000001</EC>
<RecommendDoc>https://api.aliyun.com/troubleshoot?q=0026-00000001</RecommendDoc>
</Error>

Nginx到OSS的代理工作正常,但请求的文件在OSS中不存在或路径不正确。仔细检查了下路径是对的,这说明我们Nginx写法有问题,到OSS那边的确是没有 static/test/1.png 这个文件,所以我们需要在Nginx里加个配置去掉 static 前缀。

改正之后的具体配置如下:

location /static {
    rewrite ^/static(/.*)$ $1 break; # 去掉"/static"前缀
    proxy_pass http://oss_backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

我们使用 rewrite 指令去除请求路径中的/static前缀,然后再将处理后的路径传递给 proxy_pass 指令。

这样,访问 https://apitest.xxxx.com/static/k1.png 时,Nginx就会将请求转发到 http://oss_backend/k1.png,OSS将查找Object键(Key)为 /k1.png 的文件。

测试可行。

原文地址:https://mp.weixin.qq.com/s/gAfhcALmgl7TMgmzPQjv4A

延伸 · 阅读

精彩推荐
  • Nginxnginx中的listen指令实例解析

    nginx中的listen指令实例解析

    这篇文章主要给大家介绍了关于nginx中listen指令解析的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需...

    郑尔多斯2752019-12-31
  • NginxELK监控nginx日志的整体流程

    ELK监控nginx日志的整体流程

    这篇文章主要介绍了ELK监控nginx日志总结,整体流程是先把logstash启动,读取nginx日志数据存储到ES中,再用kibana进行统计以及可视化,本文给大家介绍的非常...

    andandan8212022-07-28
  • Nginx总结高并发下Nginx性能如何优化

    总结高并发下Nginx性能如何优化

    这篇文章主要为大家介绍了在高并发下Nginx性能如何优化的总结分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步...

    PurpleHin9252021-11-11
  • Nginxmac 下 安装nginx的方法小结

    mac 下 安装nginx的方法小结

    这里简单记录一下在mac系统下安装nginx的方法,推荐给大家,有需要的小伙伴可以参考下。 ...

    hebedich6272019-10-26
  • NginxNginx配置http和https的实现步骤

    Nginx配置http和https的实现步骤

    Nginx是使用最多的代理服务器之一,本文主要介绍了Nginx配置http和https的实现步骤,具有一定的参考价值,感兴趣的可以了解一下...

    冬山兄7982024-03-29
  • Nginxnginx反向代理流程以及具体执行过程

    nginx反向代理流程以及具体执行过程

    Nginx具有强悍的高并发高负载能力,所以一般会作为前端服务器直接向客户端提供静态文件服务。但是一些复杂、多变的业务不适合放Nginx上,一般会使用...

    恒者走天下6142023-10-26
  • Nginx在Debian11上安装Openresty服务(Nginx+Lua)的详细教程

    在Debian11上安装Openresty服务(Nginx+Lua)的详细教程

    OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项,这篇文章主要介绍了在Debian11上安装...

    WangYongTao3402023-05-17
  • Nginx详解用Nginx搭建CDN服务器方法(图文)

    详解用Nginx搭建CDN服务器方法(图文)

    这篇文章主要介绍了详解用Nginx搭建CDN服务器方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    俊偉5932020-10-07