相信技术的力量

OSS 使用ESC内网进行上传和访问

介绍

OSS如果通过外网访问,流量费用不菲,本着为客户省钱的原则,使用Nginx内网请求转发来访问OSS。

前提

ECS 和 OSS 的Bucket必须处于同一地域

OSS 内网上传

使用内网Endpoint,例如: oss-cn-shanghai-internal.aliyuncs.com

注意: 本地无效,必须在同地域的ECS上才能正常上传

参考:https://help.aliyun.com/knowledge_detail/39584.html?spm=5176.2000002.0.0.5be425a7vjEOP2

OSS内网访问,依靠Nginx代理

  • 注意:必须使用下面这种配置方式,否则反向代理会出现The specified key does not exist 导致外网可访问, 反向代理内网无法访问

        server
        {
            listen 1234;
                server_name 47.88.123.123;
                index index.php index.html index.htm default.php default.htm default.html;
                root /www/wwwroot/www.test.com;
    
                #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
                #error_page 404/404.html;
                #SSL-END
    
                #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
                error_page 404 /404.html;
                error_page 502 /502.html;
                #ERROR-PAGE-END
    
                #PHP-INFO-START  PHP引用配置,可以注释或修改
                include enable-php-72.conf;
                #PHP-INFO-END
    
                #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
                include /www/server/panel/vhost/rewrite/www.test.com.conf;
                #REWRITE-END
    
                #禁止访问的文件或目录
                location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
                {
                        return 404;
                }
    
                #一键申请SSL证书验证目录相关设置
                location ~ \.well-known{
                        allow all;
                }
    
                access_log  /www/wwwlogs/www.test.com.log;
                error_log  /www/wwwlogs/www.test.com.error.log;
    
                location / {
                    proxy_pass http://yunqiao-test.oss-cn-hangzhou-internal.aliyuncs.com;
            }    
    
        }    

访问示例 : 域名(Ip+端口) + 文件地址

http://47.88.123.123:1234/image/avatar/201903/19/201903192323th5c91098d53d38.png

建议通过域名访问,然后再进行内网转发

缺点

会占用ECS的带宽

⬆️