首页 > 系统相关 >兰空图床搭建新思路:对接阿里云oss,nginx反向代理。

兰空图床搭建新思路:对接阿里云oss,nginx反向代理。

时间:2024-10-23 17:58:21浏览次数:6  
标签:set header 兰空 oss nginx 阿里 proxy mysql

我认为,图床搭建有几个关键点:

  • 提供api方便上传,且方便管理。
  • 空间够大,且稳定。
  • 不怕被盗刷流量。

基于这几点,我想到了一种成本比较低的方案,即选择一台不限流量的阿里云vps+同地域的oss,上传通过兰空图床实现,访问通过nginx反向代理阿里云内网oss来实现。

比如,购买阿里云99块钱的vps,配置为2c2g3m,可以原价续费3年。再购买45块钱国内的5年40gb oss包。这样就算后面阿里云的99元活动到期了,还可以换其他的阿里云vps,再做一遍nginx反向代理就可以了,因为图片文件都保存在oss里面,所以不用担心数据迁移的问题。缺点就是3m的带宽太小,但是对于博客的小图片来说应该是足够,再压缩成webp格式,实际速度还是不错的。

一、搭建lsky图床

我使用的是1panel中的一键安装,然后做好反向代理就可以了。

image

如果想手搓,详见:https://github.com/lsky-org/lsky-pro/issues/256

# yml文件
version: '3'
services:
  mysql-main:
    image: mysql:5.7.22
    restart: always
    #名称(可以为空)
    hostname: mysql-main
    #容器名称
    container_name: mysql-main 
    # 修改加密规则
    command: --default-authentication-plugin=mysql_native_password
    ports: 
    - "9306:3306" 
    volumes:
      - mysql-data:/var/lib/mysql
      - mysql-conf:/etc/mysql
      - mysql-log:/var/log/mysql
      - ./mysql/init:/docker-entrypoint-initdb.d
    environment:
      MYSQL_ROOT_PASSWORD: mysqlpsw
    networks:
      - mysql-net
  
  lskypro:
    # build:
    #   # 指定dockerfile文件的所在路径
    #   context: ./lskypro
    #   # 指定Dockerfile文件名称
    #   dockerfile: Dockerfile
    image: zyugat/lskypro:1.6.3
    restart: always
    hostname: lskypro
    container_name: lskypro
    ports: 
      - "9080:80" 
    volumes:
      - lsky-data:/var/www/html
    networks:
      - mysql-net

volumes:
  mysql-data:
  mysql-conf:
  mysql-log:
  lsky-data:

networks:
  mysql-net:

搭建完成后,在lsky的存储策略中创建一个新的存储策略,存储策略填阿里云oss,访问域名为后面需要反向代理的前缀地址,AccessKeyId和AccessKeySecret自己去阿里云官网申请。最好是使用子账户,给予单独的oss权限。地域节点记得填存储桶的内网地址。在使用了「公共读」的权限后,意味着 OSS 上的文件都有了一个公网可访问的地址,这是一个会导致 OSS 流量费的隐患,所以需要堵住这个入口。OSS 支持通过 Referer 方式设置防盗链功能。在阿里云的防盗链设置里面填上自己服务器的ip,这样就不怕被盗链了。

image

二、nginx反向代理阿里云oss

这里直接放nginx配置:

location ^~ /oss/ {
	# 填自己的阿里云oss存储桶地址,记得加/
    proxy_pass https://xzxxxxxxxx.oss-cn-xxxxxxxx-internal.aliyuncs.com/; 
	# 让图片链接能直接在浏览器中预览,而不是下载文件
    proxy_hide_header Content-Disposition; 
    # 阿里云oss可以设置防盗链,所以这里设置referer
    proxy_set_header Referer $host; 
    proxy_set_header Host xzxxxxxxxx.oss-cn-xxxxxxxx-internal.aliyuncs.com; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header REMOTE-HOST $remote_addr; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    # 当后端服务器返回错误时,使用自定义错误页面
    proxy_intercept_errors on; 
    # 设置自定义错误页面
    error_page 403 404 /error.html; 
    proxy_http_version 1.1; 
    add_header X-Cache $upstream_cache_status; 
    add_header Strict-Transport-Security "max-age=31536000"; 
    proxy_ssl_server_name off; 
    if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" ) {
        expires 1m; 
    }
    proxy_ignore_headers Set-Cookie Cache-Control expires; 
    proxy_cache proxy_cache_panel; 
    proxy_cache_key $host$uri$is_args$args; 
    proxy_cache_valid 200 304 301 302 10m; 
}

值得注意的是,当输入一个不存在的图片链接时,会返回阿里云oss的错误信息,这其中包含着存储桶的链接,这样有一定的安全隐患,所以用自定义错误页面,直接返回404页面。

# 当后端服务器返回错误时,使用自定义错误页面
    proxy_intercept_errors on; 
    # 设置自定义错误页面
    error_page 403 404 /error.html; 

标签:set,header,兰空,oss,nginx,阿里,proxy,mysql
From: https://www.cnblogs.com/drcode/p/18497971/lsky-nginx-oss

相关文章

  • Nginx:各种问题
    1、nginx:commandnotfound使用ll查看文件权限,看nginx的权限是否为rw-r--r--如果是的话,说明该文件现在没有执行权限。使用指令chmod755./sbin/nginx把该文件的可执行权限开启。 2、auto/options:Nosuchfileordirectory 出现于:bash./configure配置nginx时解决方......
  • SpringBoot-集成阿里云OSS对象存储
    阿里云OSS-对象存储一介绍阿里云对象存储OSS(ObjectStorageService),是一款海量、安全、低成本、高可靠的云存储服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。在我们使用了阿里云OSS对象存储服务之后,我们的项目当中如果涉及......
  • 轴承故障诊断 (12)基于交叉注意力特征融合的VMD+CNN-BiLSTM-CrossAttention故障识别模
    往期精彩内容:Python-凯斯西储大学(CWRU)轴承数据解读与分类处理Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客三十多个开源数据集|故障诊断再也不用担心数据集了!P......
  • 麒麟系统通过CrossOver软件安装Windows软件(.exe)的详细过程
    1、安装CrossOver要先更新一下软件集:sudoaptupdate再安装KWRE版的微信。sudoaptinstallkylin-kwre-wechat安装成功后打开CrossOver程序:2、添加windows容器介绍:容器有Windows98、windows2000、windowsXP、windowsVista、windows7、windows8、windows1......
  • nginx上线一个静态页
    要使用Nginx配合一个静态网页,你需要按照以下步骤进行设置:###1.安装Nginx在大多数Linux发行版上,你可以使用包管理器来安装Nginx。**对于Ubuntu/Debian:**```bashsudoaptupdatesudoaptinstallnginx```**对于CentOS/RHEL:**```bashsudoyuminstallepel-releas......
  • Linux部署nginx
     linux部署启动nginx在Linux上部署并启动Nginx的步骤通常如下: 安装Nginx:使用包管理器(如apt或yum)安装Nginx。对于基于Debian的系统(如Ubuntu),使用以下命令:sudoaptupdatesudoaptinstallnginx对于基于RPM的系统(如CentOS),使用以下命令:sudoyuminsta......
  • Linux下安装Nginx,CentOS7安装Nginx
    首先,需要安装一些编译Nginx所需的依赖包,使用以下命令:yum-yinstallgccpcre-develzlib-developenssl-devel下载https://nginx.org/en/download.html上传到opt目录下或者直接在linux系统里下载wgethttp://nginx.org/download/nginx-1.26.2.tar.gz如果command......
  • redis mysql nginx的docker-compose
    redismysqlnginx的docker-composeversion:'3'services:nginx:image:docker.m.daocloud.io/nginx:latestcontainer_name:nginxrestart:unless-stoppedenvironment:TZ:Asia/ShanghaiLANG:en_US.UTF-8volumes:#......
  • k8s部署nginx
    创建namespacenginx-namespace.yamlapiVersion:v1kind:Namespacemetadata:name:ns-nginx创建Deploymentnginx-deployment.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:nginx-deploymentnamespace:ns-nginxspec:selector:matchLabels:......
  • nginx配置
    为什么用postman请求本地的接口前面是http不是httpshttp://localhost:18080/api/v3/process/selectSubTableData 在开发和测试环境中,使用HTTP而不是HTTPS来请求本地接口是非常常见的做法,原因包括:简化配置:在本地开发时,通常不需要设置HTTPS,这样可以避......