Nginx代理minIO图片路径实现公网图片访问

1、网络部署情况

VUE前端项目Nginx部署在公司内网,端口7790

后台接口项目部署在公司内网,端口7022

minIO服务部署在公司内网,端口9000

公网IP设备将80端口映射到7790端口(具体映射方式不详),实现通过互联网访问系统。

2、遇到的问题

后台将图片的minIO共享路径,直接返回给前端,交给浏览器去请求。

例如:http://内网IP:9000/bucketname/imagename.png?XXXXXXX

浏览器能通过内网地址访问系统,一般情况下也能直接访问到minIO服务器,图片展示没问题。

当用户不在公司内网环境,用浏览器通过公网地址访问系统时,后台接口返回的图片地址,浏览器无法直接请求到。

3、问题解决方案

(1)前端修改图片请求地址,代码如下:

javascript 复制代码
Vue.directive('minio-src', {
    inserted: async function(el, binding) { //指令名称为:real-img
        let imgURL = binding.value; //获取图片地址
        if (imgURL) {
            const protocol = window.location.protocol;
            const host = window.location.host;

            imgURL = imgURL.replaceAll(process.env.VUE_APP_MINIO_HOST,protocol+"//"+host+"/minio");
            console.log("minio-url",imgURL);
            el.setAttribute('src', imgURL);

        }
    }
})

其中process.env.VUE_APP_MINIO_HOST是获取前端项目的环境变量,配置代码如下:

javascript 复制代码
VUE_APP_MINIO_HOST = "http://172.17.0.1:9000"

img标签使用自定义指令,代码如下:

html 复制代码
<img v-minio-src="imagUrl"/>                 

(2)Nginx代理配置如下:

cpp 复制代码
location /minio/ {
    proxy_pass http://172.17.0.1:9000/;
}
相关推荐
就叫飞六吧21 小时前
css+js 前端无限画布实现
前端·javascript·css
2501_9411481521 小时前
高并发搜索引擎Elasticsearch与Solr深度优化在互联网实践分享
java·开发语言·前端
IT 前端 张21 小时前
Uniapp全局显示 悬浮组件/无需单页面引入
前端·javascript·uni-app
allenjiao21 小时前
WebGPU vs WebGL:WebGPU什么时候能完全替代WebGL?Web 图形渲染的迭代与未来
前端·图形渲染·webgl·threejs·cesium·webgpu·babylonjs
司铭鸿21 小时前
化学式解析的算法之美:从原子计数到栈的巧妙运用
linux·运维·服务器·算法·动态规划·代理模式·哈希算法
上车函予21 小时前
geojson-3d-renderer:从原理到实践,打造高性能3D地理可视化库
前端·vue.js·three.js
❀͜͡傀儡师21 小时前
docker部署orion-ops一站式运维管理平台
运维·docker·github
孟祥_成都21 小时前
别被营销号误导了!你以为真的 Bun 和 Deno 比 Node.js 快很多吗?
前端·node.js
Lsx_21 小时前
🔥Vite+ElementPlus 自动按需加载与主题定制原理全解析
前端·javascript·element
last demo21 小时前
MariaDB 数据库管理
linux·运维·服务器·数据库·php·mariadb