公司采用了阿里云的oss来存储大量图片,oss存储很方便,存储的图片可直接通过url地址访问,但是也有个问题,外网访问oss文件需要通过流量计费,而内网访问不计流量费用。原本我们就有阿里云服务器,既然如此是否可通过在阿里云服务器上的nginx进行转发,这样就可达到即可访问oss又不需要单独计费的外网流量。说干就干。
配置
部署nginx的过程不详述,只写一下如何配置nginx转发:
将server修改为如下,添加upstream mysvr配置节点,proxy_set_header Host一定不能少,否则访问不了。
server {
listen 80 default_server;
listen [::]:80 default_server;
# your domain name , such as :
# server_name pic.baidu.com;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
add_header backendIP $upstream_addr;
add_header backendCode $upstream_status;
proxy_pass http://mysvr;
proxy_set_header Host yourOssName.oss-cn-shenzhen-internal.aliyuncs.com;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
upstream mysvr {
server oss-cn-shenzhen-internal.aliyuncs.com;
}
oss设置-修改文件访问权限
在默认访问权限情况下文件生成的url会有过期时间,过期就不能访问,可修改文件的访问权限为“公共读”,或者直接修改Bucket权限为“公共读”,url将一直有效。