一个懒癌患者的自言自语



nginx反向代理实现通过外网访问阿里云内网oss

首先阿里云ecs和oss必须在统一地域,否则无法实现

实现方式:用户访问ecs,然后通过nginx反向代理实现ecs通过内网地址访问oss,然后在返回资源给用户

nginx代理方式如下,在需要代理的网站配置文件中添加如下代码:

location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ { 
        rewrite  /(.+)$  /$1 break;
        proxy_pass https://***.aliyuncs.com;
}

其中***代表请求的oss内网地址,需要替换为实际地址, rewrite /(.+)$ /$1 break;这段意思为 用rewrite进行url重写,使用户访问的url后缀,也传递到OSS上

比如访问的http://abc.com/a/b/c.png 会替换为 ***.aliyuncs.com/a/b/c.png进行访问,这样实现了通过外网访问内网资源

通过搭配oss镜像回源的方式还可以实现不改动代码的情况下将服务器静态资源整体迁移到oss,而且访问方式不受影响

具体实现除了需要设置上面的反向代理外,nginx还要做如下配置:

新建一个站点配置文件,内容如下:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    root /var/www/html/public_html;
    index index.html index.htm;
    server_name _ ;
}

其中root的路径设置为你的项目路径,比如这里上一步http://abc.com/的项目路径就为 /var/www/html/public_html

监听端口后添加default_server是为了确保oss回源访问的时候是访问的这个站点,或者也可以直接分配个域名指向这个站点,server_name 后面改为相应的域名,就可以不需要在监听端口后面添加default_server了

配置好后重启nginx,然后到oss后台设置回源地址

提交后就可以尝试访问了,比如访问http://abc.com/a/b/c.png ,如果在oss文件管理里面出现了相应的资源证明配置成功

About ME

about me

kevin

一个在it道路上蹒跚学步的人

心有多大,舞台就有多大,一直奔跑在自己的路上!

Contact ME