GitHub + jsDelivr + Nginx + PicGo 搭建自定义域名CDN加速免费图床

前言

  • 经常写Markdown或者博客的同学,一般都会用到图床。图床是什么呢?其实就是一个存储图片的网站,上传图片到图床后可以直接通过外链进行访问。
  • 例如把本地一张test.jpg上传图床后,即可以用外链:https://www.xxx.com/cdn/test.jpg,此链接可在浏览器直接访问test.jpg了。
  • 最近想把这几年的开发笔记发布到 我的博客 由于服务器为1M带宽,加载静态文件及图片相对较为缓慢,于是就想搞个cdn加速,google了一番,发现推荐免费用的多多少少都有限制,最终根据个人需求选择了GitHub + jsDelivr + Nginx反向代理的方式搭建cdn加速。
  • github仓库容量限制在1G,单个文件不能超过100M,有50M的文件,就会警告,但是针对个人博客来说已经足够了,实在不够就在新建一个仓库即可。

jsDelivr CDN 介绍

  • jsDelivr 是国外的一家优秀的公共 CDN 服务提供商,也是首个「打通中国大陆(网宿公司运营)与海外的免费 CDN 服务」,同时也为 npm、GitHub、WordPress 插件和具有特殊要求的其他几个项目的自定义终结点提供镜像。
    image

  • 从上图可以看出来,POP 点也是分布全球比较均匀的,而且works in China(能够在中国使用)!接下来开始介绍如何搭建 GitHub + jsDelivr + Nginx 自定义域名的免费图床,速度杠杠的。

Github配置

  • 首先需要先有Github账号(没有的话自己注册,此处不在讲解)。

  • 创建Github资料库

  • 进入github个人首页点击New

image
  • 创建一个Repositories
  • 点击个人账号头像-在点击settings
  • 在点Developer settings
  • 在点击Personal access tokens-在点击Generate New token
  • 输入Note - 在勾选repo所有的选项
  • 创建完成后会生成Token,只会出现一次,记得保存备用。

Nginx反向代理配置

  • nginx安装:

    • ubuntu:apt-get update && apt-get install nginx
    • centos:yum update && yum install nginx
    • docker:docker run -d --name nginx --net=host -d nginx
  • 切换至nginx配置文件目录新建配置文件 cd /etc/nginx/conf.d/ && touch test.conf将以下内容存储至test.conf

proxy_cache_path /tmp/cache levels=1:2 keys_zone=mycache:100m inactive=1d max_size=10g;

server {
    # 端口和域名
    listen 443 ssl;
    server_name example.cn;
	# cert文件
    ssl_certificate cert.pem;
    # key文件
    ssl_certificate_key key.pem;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;


    # 图床映射,添加自己的图床地址即可
    location ^~ /cdn/ {
        proxy_pass https://cdn.jsdelivr.net/gh/github账号/图片仓库名/;
        proxy_cache mycache;
        expires 30d;
    }

    # 其他配置
    client_max_body_size 2m;
    client_header_buffer_size 128k;
    client_body_buffer_size 1m;
    proxy_buffer_size 32k;
    proxy_buffers 64 32k;
    proxy_busy_buffers_size 1m;
    proxy_temp_file_write_size 512k;
}

# http 跳转到 https
server {
    listen 80;
    server_name example.cn;
    rewrite ^(.*) https://www.$server_name$1 permanent;
}
  • 重启nginx服务即可
    • service nginx restart
    • docker restart nginx

PicGo上传图片工具下载配置

  • github下载地址:https://github.com/Molunerfinn/PicGo/releases
  • 加速下载地址:将https://github.com替换为 https://github.91chifun.workers.dev/https://github.com/即可
  • 加速下载示例:https://github.91chifun.workers.dev/https://github.com//Molunerfinn/PicGo/releases/download/v2.3.0/PicGo-Setup-2.3.0-x64.exe
  • 下载好正常安装即可

  • PicGo配置github图床

    • 设定仓库名:github账号/图片仓库名
    • 设定分支名:master
    • 设定Token:填写刚才我们生成的 Token
    • 指定存储路径:如果需要指定子目录可以填写例如 img/,不填及上传至仓库根目录
    • 设定自定义域名:填写 jsDelivr 的域名,即图片访问地址,不包括图片路径的前半部分, https://cdn.jsdelivr.net/gh/github账号/图片仓库名@master,如用nginx配置反向代理,也可用自己的域名https://example.cn/cdn/
    • 最后设为默认图床,下次在 typora 上传图片就会自动上传到 github 图床了。
  • 配置好之后,就可以切换到 “上传区” 选择 “图片上传 - GitHub图床” 后就可以上传图片了,支持拖拽、点击、剪贴板上传,上传后,图片链接直接复制的你的剪贴板中。

结语

<think>嗯,用户问的是关于Spring Boot 3和Vue 3的学习知识点以及系统项目搭建运行的介绍。首先,我需要确定用户的基础,可能是一个刚入门的开发者,想要了解这两个技术栈的结合使用。用户的需求很明确,就是要从知识点学习到实际项目搭建的指导。 首先,我应该分两部分来回答:Spring Boot 3和Vue 3各自需要掌握的知识点,然后是如何将它们整合在一起搭建项目。可能还需要给出一个简单的项目示例,帮助用户理解整个流程。 对于Spring Boot 3,需要涵盖基础概念、核心功能,比如自动配置、起步依赖,还有新特性如JDK 17的支持,Native镜像构建。然后模块方面,Web开发、数据访问、安全认证、API文档、配置文件、测试和监控这些都要提到。每个部分的关键点要简明扼要,比如数据访问部分可以讲JPA和MyBatis的区别,安全方面提到Spring Security和OAuth2。 Vue 3部分,同样要基础概念,比如组合式API、响应式原理,然后是核心功能模块,组件化开发、路由、状态管理、UI框架、TypeScript集成、API调用和构建部署。这里需要注意Vue 3和Vue 2的区别,比如组合式API的优势,以及Pinia作为新的状态管理工具。 项目搭建部分,需要给出一个前后端分离的典型结构,说明如何分别创建后端和前端项目,如何进行联调,比如跨域处理,以及如何部署。示例项目部分,可以举一个用户管理的例子,后端提供REST API,前端用Vue实现页面交互,这样用户能更直观地理解。 还要考虑用户可能遇到的问题,比如跨域配置、接口联调时的数据格式、部署时的注意事项。此外,学习资源推荐也很重要,官方文档、社区、开源项目这些都能帮助用户进一步学习。 需要确保语言口语化,避免技术术语堆砌,同时逻辑清晰,结构分明。可能用户需要的是步骤式的指导,所以分点列出会比较合适。最后检查有没有遗漏的关键点,比如项目结构、依赖管理、前后端通信方式等,确保覆盖整个开发流程。</think>好的!以下是一个关于 **Spring Boot 3 + Vue 3** 的学习路径和项目搭建的详细介绍,适合从知识点学习到实际项目落地的完整流程: --- ### **一、技术栈简介** 1. **Spring Boot 3** - Java 后端框架,基于 Spring 5,支持 Java 17+,简化配置和微服务开发。 - 新特性:支持 GraalVM Native 镜像、改进的 Micrometer 监控、Jakarta EE 9+(取代 javax)。 2. **Vue 3** - 前端渐进式框架,支持组合式 API(Composition API)、更好的 TypeScript 集成、性能优化(Proxy 替代 defineProperty)。 --- ### **二、核心知识点学习** #### **Spring Boot 3 学习重点** 1. **基础与核心** - 自动配置(Auto-Configuration)原理 - 起步依赖(Starter Dependencies) - 内嵌容器(Tomcat/Jetty) - Spring MVC 与 RESTful API 开发 - 配置文件(`application.yml` 或 `application.properties`) 2. **数据访问** - Spring Data JPA(Hibernate) - MyBatis 或 MyBatis-Plus 整合 - 事务管理(`@Transactional`) 3. **安全与认证** - Spring Security 6(OAuth2/JWT 整合) - 跨域配置(CORS) 4. **API 文档** - OpenAPI 3(SpringDoc 替代 Swagger) 5. **测试与监控** - 单元测试(JUnit 5 + Mockito) - Actuator 监控端点 - Prometheus + Grafana 集成 6. **其他** - 异步任务(`@Async`) - 缓存(Redis/Caffeine) - 消息队列(RabbitMQ/Kafka) --- #### **Vue 3 学习重点** 1. **基础与核心** - 组合式 API(Composition API) - 响应式原理(`ref`、`reactive`、`watch`、`computed`) - 组件化开发(Props/Emits/Slots) 2. **路由与状态管理** - Vue Router 4(动态路由、导航守卫) - Pinia(替代 Vuex 的状态管理库) 3. **UI 框架** - Element Plus / Ant Design Vue / Vuetify 等组件库 4. **工程化** - Vite 构建工具(替代 Webpack) - TypeScript 集成 - ESLint + Prettier 代码规范 5. **网络请求** - Axios 封装(拦截器、统一错误处理) - RESTful API 调用 --- ### **三、项目搭建与运行** #### **1. 前后端分离架构** ``` project-root/ ├── backend/ # Spring Boot 3 项目 │ ├── src/ │ ├── pom.xml # Maven 依赖管理 ├── frontend/ # Vue 3 项目 │ ├── src/ │ ├── package.json # NPM 依赖管理 ``` #### **2. 后端(Spring Boot 3)** 1. **创建项目** - 使用 [Spring Initializr](https://start.spring.io/) 生成项目,选择依赖: `Web`, `Spring Data JPA`, `Lombok`, `Spring Security`, `MySQL Driver` 等。 2. **核心代码示例** ```java // 1. 定义实体类 @Entity @Data public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String email; } // 2. 定义 REST 控制器 @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserRepository userRepository; @GetMapping public List<User> getAllUsers() { return userRepository.findAll(); } } ``` 3. **配置跨域** ```java @Configuration public class CorsConfig { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://localhost:5173") // Vue 前端地址 .allowedMethods("*"); } }; } } ``` 4. **运行** ```bash mvn spring-boot:run ``` --- #### **3. 前端(Vue 3)** 1. **创建项目** ```bash npm create vue@latest # 选择 TypeScript、Pinia、Router、ESLint 等 ``` 2. **调用后端 API(Axios 示例)** ```typescript // src/api/user.ts import axios from 'axios'; const api = axios.create({ baseURL: 'http://localhost:8080/api', }); export const getUsers = () => api.get('/users'); ``` 3. **页面组件** ```vue <!-- src/views/UserList.vue --> <script setup lang="ts"> import { onMounted, ref } from 'vue'; import { getUsers } from '@/api/user'; interface User { id: number; username: string; email: string; } const users = ref<User[]>([]); onMounted(async () => { const response = await getUsers(); users.value = response.data; }); </script> <template> <div> <h1>用户列表</h1> <ul> <li v-for="user in users" :key="user.id">{{ user.username }}</li> </ul> </div> </template> ``` 4. **运行** ```bash npm run dev ``` --- ### **四、联调与部署** 1. **联调注意事项** - 确保后端开启跨域(或通过 Nginx 代理解决)。 - 使用 Postman 或 Apifox 测试接口。 - 前后端统一数据格式(如 JSON)。 2. **部署** - **后端**:打包为 JAR 运行,或使用 Docker 容器化。 - **前端**:`npm run build` 生成静态文件,部署到 Nginx/CDN。 --- ### **五、学习资源推荐** 1. **文档** - [Spring Boot 3 官方文档](https://spring.io/projects/spring-boot) - [Vue 3 官方文档](https://vuejs.org/) 2. **社区** - Stack Overflow、GitHub Issues、掘金/知乎技术专栏。 3. **实战项目** - 博客系统、CRM、电商管理后台等。 --- 通过以上步骤,你可以逐步掌握 Spring Boot 3 和 Vue 3 的核心技术,并完成一个完整的前后端分离项目!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LoganJinDev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值