公司以前是自建MinIO文件服务,后面决定全部上云使用阿里云oss。出于一下几个目的决定使用nginx反向代理到阿里云oss。
1、前端发布app会有一个过度阶段,如果换成阿里云的oss地址,则有些用户还在使用MinIo的地址,会发生图片不在的情况。决定不更换前端地址。
2、阿里云OSS的收费包括存储、请求次数、外网流量地址。使用反向代理走内网可以规避外网流量。
nginx配置如下:
- server {
- listen 80 default_server;
- listen [::]:80 default_server;
- listen 443 ssl http2;
- listen [::]:443 ssl http2;
- server_name apptest.xxx.com;
- root /usr/share/nginx/html;
-
- ssl_certificate "/etc/nginx/ssl/apptest.xxx.com_bundle.crt";
- ssl_certificate_key "/etc/nginx/ssl/apptest.xxx.com.key";
- ssl_session_cache shared:SSL:1m;
- ssl_session_timeout 10m;
- ssl_ciphers HIGH:!aNULL:!MD5;
- ssl_prefer_server_ciphers on;
-
- # Load configuration files for the default server block.
- include /etc/nginx/default.d/*.conf;
-
- location /resources/ {
- # oss内网地址
- proxy_pass https://bucketxxx.oss-cn-chengdu-internal.aliyuncs.com/;
- # oss内网地址
- proxy_set_header Host bucketxxx.oss-cn-chengdu-internal.aliyuncs.com;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Forwarded-Host $host;
- proxy_set_header X-Forwarded-Server $host;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- proxy_read_timeout 1d;
- proxy_send_timeout 1d;
- # 此处配置是为了把阿里云oss的返回的Content-Disposition隐藏掉,否则图片或文件在浏览器中会下载,不会显示。
- proxy_hide_header Content-Disposition;
- }
-
- error_page 404 /404.html;
- location = /40x.html {
- }
-
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- }
- }
配置中 proxy_hide_header Content-Disposition; 的目的是阿里云oss返回以后头部携带 Content-Disposition参数浏览器会下载图品或文件,隐藏掉以后就可以在浏览器显示图片了。