当前位置: 首页 > article >正文

20260422 反向代理实践环境

一、反向代理实践环境1.1 环境架构服务器主机名IP地址客户端client.jiang.cloud10.1.8.11Nginx服务器proxy.jiang.cloud10.1.8.20Nginx服务器nginx1.jiang.cloud10.1.8.21Nginx服务器nginx2.jiang.cloud10.1.8.22Nginx服务器nginx3.jiang.cloud10.1.8.23# 所有节点[rootclientproxy,nginx1,nginx2,nginx3 ~]# vim /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6############ proxy ##################10.1.8.11 client.laogao.cloud client10.1.8.20 www.jiang.cloud www10.1.8.20 proxy.jiang.cloud proxy10.1.8.21 nginx1.jiang.cloud nginx110.1.8.22 nginx2.jiang.cloud nginx210.1.8.23 nginx3.jiang.cloud nginx31.2 后端 nginx 服务器配置# 除了客户端所有节点安装nginx并启动nginx服务[rootnginx1 ~ 09:37:18]# yum -y install nginx# 启动并启用服务[rootnginx1 ~ 09:38:08]# systemctl enable nginx.service --now# 防火墙设置[rootnginx1 ~ 09:39:06]# firewall-cmd --add-servicehttp --permanentFirewallD is not running[rootnginx1 ~ 09:40:26]# firewall-cmd --add-servicehttpFirewallD is not running# 准备主页-其他节点[rootnginx1 ~ 09:40:36]# echo Welcome to $(hostname) /usr/share/nginx/html/index.html[rootnginx2 ~ 09:40:36]# echo Welcome to $(hostname) /usr/share/nginx/html/index.html[rootnginx3 ~ 09:40:36]# echo Welcome to $(hostname) /usr/share/nginx/html/index.html# 客户端测试[rootclient ~ 09:37:08]# curl http://nginx1.jiang.cloud/Welcome to nginx1.jiang.cloud[rootclient ~ 09:44:13]# curl http://nginx2.jiang.cloud/Welcome to nginx2.jiang.cloud[rootclient ~ 09:44:24]# curl http://nginx3.jiang.cloud/Welcome to nginx3.jiang.cloud1.3 前端 proxy 服务器配置# 准备主页-代理节点[rootproxy ~ 09:46:12]# echo Welcome to www.jiang.cloud /usr/share/nginx/html/index.html[rootproxy ~ 09:47:00]# mkdir /var/nginx[rootproxy ~ 09:47:15]# echo Hello,Nginx /var/nginx/index.html[rootproxy ~ 09:47:46]# echo Hello,jiang /var/nginx/test.txt[rootproxy ~ 09:48:10]# cp /usr/share/nginx/html/nginx-logo.png /var/nginx/[rootproxy ~ 09:48:25]# ls /var/nginx/index.html nginx-logo.png test.txt[rootproxy ~ 09:48:34]# vim /etc/nginx/conf.d/proxy.confserver{listen80;server_name www.laogao.cloud;# 匹配根位置location /{root /var/nginx;index index.html;}}# 重新加载nginx配置[rootproxy ~ 09:49:28]# nginx -s reload1.4 测试[rootclient ~ 09:44:28]# curl http://www.jiang.cloud/Hello,Nginx[rootclient ~ 09:49:56]# curl http://www.jiang.cloud/test.txtHello,jiang二、反向代理基础实践-代理本地[rootproxy ~10:37:43]# mkdir /var/nginx/nginx{1,2}[rootproxy ~10:38:04]# echo Hello,Im here /var/nginx/nginx1 /var/nginx/nginx1/index.html[rootproxy ~ 10:39:10]# echo Hello,Im here /var/nginx/nginx2 /var/nginx/nginx2/index.html[rootproxy ~10:39:21]# mkdir /var/nginx{1,2}[rootproxy ~10:39:44]# echo Hello,Nginx1 /var/nginx1/index.html[rootproxy ~10:40:14]# echo Hello,Nginx2 /var/nginx2/index.html[rootproxy ~10:41:08]# tree /var/nginx*/var/nginx ├── index.html ├── nginx1 │ └── index.html ├── nginx2 │ └── index.html ├── nginx-logo.png └── test.txt /var/nginx1 └── index.html /var/nginx2 └── index.html2directories,7files[rootproxy ~10:41:10]# \forpath1inwww{1..2}doforpath2innginx{1..2}domkdir-p/var/$path1/$path2echoHello,Im here /var/$path1/$path2/var/$path1/$path2/index.htmldonedone[rootproxy ~10:43:56]# tree /var/www*/var/www1 ├── nginx1 │ └── index.html └── nginx2 └── index.html /var/www2 ├── nginx1 │ └── index.html └── nginx2 └── index.html4directories,4files基本测试[rootclient ~ 09:54:06]# curl http://www.jiang.cloud/Hello,Nginx# 显示结果是目录/var/nginx/nginx1中内容[rootclient ~10:44:41]# curl http://www.jiang.cloud/nginx1/Hello,Im here /var/nginx/nginx1 # 显示结果是目录/var/nginx/nginx2中内容 [rootclient ~ 10:44:49]# curl http://www.jiang.cloud/nginx2/ Hello,Im here /var/nginx/nginx2实践1无符号匹配[rootproxy ~10:44:07]# vim /etc/nginx/conf.d/proxy.confserver{listen80;server_name www.jiang.cloud;# 匹配根位置location /{root /var/nginx;index index.html;}# 匹配/nginx1时/var目录下找nginx1完整路径是/var/nginx1location /nginx1{root /var;# 等效于下面的 alias 语句必须使用绝对路径# alias /var/nginx1;index index.html;}}# 重新加载nginx配置[rootproxy ~10:46:21]# nginx -s reload访问测试# nginx1 后面必须添加 / 符号[rootclient ~10:44:56]# curl http://www.jiang.cloud/nginx1/Hello,Nginx1# 显示结果是目录/var/nginx1中内容# nginx2 后面必须添加 / 符号[rootclient ~10:46:40]# curl http://www.jiang.cloud/nginx2/Hello,Im here /var/nginx/nginx2# 显示结果是目录/var/nginx/nginx2中内容实验结果无符号匹配优先级高于默认的/。实践2正则表达式匹配[rootproxy ~10:44:07]# vim /etc/nginx/conf.d/proxy.confserver{listen80;server_name www.jiang.cloud;# 匹配根位置location /{root /var/nginx;index index.html;}# 匹配/nginx1时/var目录下找nginx1完整路径是/var/nginx1location /nginx1{root /var;# 等效于下面的 alias 语句必须使用绝对路径# alias /var/nginx1;index index.html;}# 正则表达式匹配 /nginx.*location ~ /nginx.*{root /var/www1;index index.html;}}# 重新加载nginx配置[rootproxy ~10:46:21]# nginx -s reload访问测试# nginx1 后面必须添加 / 符号[rootclient ~10:46:43]# curl http://www.jiang.cloud/nginx1/Hello,Im here /var/www1/nginx1 # 显示结果是目录/var/www1/nginx1中内容 # nginx2 后面必须添加 / 符号 [rootclient ~ 10:48:08]# curl http://www.jiang.cloud/nginx2/ Hello,Im here /var/www1/nginx2# 显示结果是目录/var/www1/nginx2中内容实验结果正则表达式匹配优先级高于无符号。实践3精确匹配[rootproxy ~11:18:57]# vim /etc/nginx/conf.d/proxy.confserver{listen80;server_name www.jiang.cloud;# 匹配根位置location /{root /var/nginx;index index.html;}# 匹配/nginx1时/var目录下找nginx1完整路径是/var/nginx1location /nginx1{root /var;# 等效于下面的 alias 语句必须使用绝对路径# alias /var/nginx1;index index.html;}# 正则表达式匹配 /nginx.*location ~ /nginx.*{root /var/www1;index index.html;}# 精确匹配location/nginx2/index.html{root /var/www2;index index.html;}}# 重新加载nginx配置[rootproxy ~11:19:38]# nginx -s reload访问测试# nginx1 后面必须添加 / 符号[rootclient ~10:48:12]# curl http://www.jiang.cloud/nginx1/Hello,Im here /var/www1/nginx1 # 显示结果是目录/var/www1/nginx1中内容 # nginx2 后面必须添加 / 符号 [rootclient ~ 11:19:48]# curl http://www.jiang.cloud/nginx2/ Hello,Im here /var/www2/nginx2# 显示结果是目录/var/www2/nginx2中内容实验结果精确匹配优先级高于正则表达式。三、反向代理基础实践-代理远端实践1无符号匹配[rootproxy ~11:19:40]# vim /etc/nginx/conf.d/proxy.confserver{listen80;server_name www.jiang.cloud;# 匹配根位置location /{root /var/nginx;index index.html;}# 匹配 /nginx1/ 开头代理到nginx1.jiang.cloud/nginx1/不组合到后端服务器# 访问 /nginx1/ 开头相当于直接访问http://nginx1.laogao.cloud/location /nginx1/{# 后端服务proxy_pass http://nginx1.jiang.cloud/;# 注意代理后端后面有 /。index index.html;}}# 重新加载nginx配置[rootproxy ~13:50:12]# nginx -s reload访问测试# nginx1 后面必须添加 / 符号[rootclient ~11:19:56]# curl http://www.jiang.cloud/nginx1/Welcome to nginx1.jiang.cloud# 显示结果是服务器 nginx1.laogao.cloud 内容# nginx2 后面必须添加 / 符号[rootclient ~13:50:23]# curl http://www.jiang.cloud/nginx2/Hello,Im here /var/nginx/nginx2# 显示结果是目录/var/nginx/nginx2中内容**实验结果**无符号匹配优先级高于默认的/。实践2正则表达式匹配[rootproxy ~11:19:40]# vim /etc/nginx/conf.d/proxy.confserver{listen80;server_name www.jiang.cloud;# 匹配根位置location /{root /var/nginx;index index.html;}# 匹配 /nginx1/ 开头代理到nginx1.jiang.cloud/nginx1/不组合到后端服务器# 访问 /nginx1/ 开头相当于直接访问http://nginx1.jiang.cloud/location /nginx1/{# 后端服务proxy_pass http://nginx1.jiang.cloud/;# 注意代理后端后面有 /。index index.html;}# 正则表达式匹配 /nginx.*location ~ /nginx[12].*{# 手动重写路径去掉 /nginx 前缀转发到目标服务器# ^/nginx[12](.*)$ 匹配 /nginx[12] 开头的完整路径$1表示 /nginx[12] 后的所有内# break 表示重写后不再匹配其他 rewrite 规则rewrite ^/nginx[12](.*)$$1break;# proxy_pass 不带 URI无末尾的 /配合 rewrite 实现路径替换proxy_pass http://nginx2.jiang.cloud;index index.html;}}# 重新加载nginx配置[rootproxy ~13:56:28]# nginx -s reload# nginx 后面必须添加 / 符号[rootclient ~13:50:28]# curl http://www.jiang.cloud/nginx1/Welcome to nginx2.jiang.cloud# 显示结果是服务器 nginx2.jiang.cloud 内容# nginx 后面必须添加 / 符号[rootclient ~13:58:25]# curl http://www.jiang.cloud/nginx2/Welcome to nginx2.jiang.cloud# 显示结果是服务器 nginx2.jiang.cloud 内容**实验结果**正则表达式匹配优先级高于无符号。实践3精确匹配[rootproxy ~11:19:40]# vim /etc/nginx/conf.d/proxy.confserver{listen80;server_name www.jiang.cloud;# 匹配根位置location /{root /var/nginx;index index.html;}# 匹配 /nginx1/ 开头代理到nginx1.jiang.cloud/nginx1/不组合到后端服务器# 访问 /nginx1/ 开头相当于直接访问http://nginx1.jiang.cloud/location /nginx1/{# 后端服务proxy_pass http://nginx1.jiang.cloud/;# 注意代理后端后面有 /。index index.html;}# 正则表达式匹配 /nginx.*location ~ /nginx[12].*{# 手动重写路径去掉 /nginx 前缀转发到目标服务器# ^/nginx[12](.*)$ 匹配 /nginx[12] 开头的完整路径$1表示 /nginx[12] 后的所有内# break 表示重写后不再匹配其他 rewrite 规则rewrite ^/nginx[12](.*)$$1break;# proxy_pass 不带 URI无末尾的 /配合 rewrite 实现路径替换proxy_pass http://nginx2.jiang.cloud;index index.html;}# 精确匹配location/nginx1/{proxy_pass http://nginx.jiang.cloud/;index index.html;}}# 重新加载nginx配置[rootproxy ~14:01:16]# nginx -s reload访问测试# nginx1 后面必须添加 / 符号[rootclient ~14:02:21]# curl http://www.jiang.cloud/nginx1/Welcome to nginx1.jiang.cloud# 显示结果是服务器 nginx1.jiang.cloud 内容# nginx2 后面必须添加 / 符号[rootclient ~14:05:35]# curl http://www.jiang.cloud/nginx2/Welcome to nginx2.jiang.cloud# 显示结果是服务器 nginx2.jiang.cloud 内容;index index.html;}}重新加载nginx配置[rootproxy ~ 14:01:16]# nginx -s reload**访问测试** bash # nginx1 后面必须添加 / 符号 [rootclient ~ 14:02:21]# curl http://www.jiang.cloud/nginx1/ Welcome to nginx1.jiang.cloud # 显示结果是服务器 nginx1.jiang.cloud 内容 # nginx2 后面必须添加 / 符号 [rootclient ~ 14:05:35]# curl http://www.jiang.cloud/nginx2/ Welcome to nginx2.jiang.cloud # 显示结果是服务器 nginx2.jiang.cloud 内容**实验结果**精确匹配优先级高于正则表达式。

相关文章:

20260422 反向代理实践环境

一、反向代理实践环境 1.1 环境架构服务器主机名IP地址客户端client.jiang.cloud10.1.8.11Nginx服务器proxy.jiang.cloud10.1.8.20Nginx服务器nginx1.jiang.cloud10.1.8.21Nginx服务器nginx2.jiang.cloud10.1.8.22Nginx服务器nginx3.jiang.cloud10.1.8.23# 所有节点 [rootclien…...

SQLAdmin:为异步Python框架构建现代化数据管理界面的技术方案

SQLAdmin:为异步Python框架构建现代化数据管理界面的技术方案 【免费下载链接】sqladmin SQLAlchemy Admin for FastAPI and Starlette 项目地址: https://gitcode.com/gh_mirrors/sq/sqladmin SQLAdmin是一个专为FastAPI和Starlette等异步Python框架设计的S…...

中小企业短期靠外包,长期必须培养懂业务的AI核心人才。

在这种现实约束下,“短期靠外包,长期培养懂业务的AI核心人才”,成为中小企业实现AI落地、构筑核心竞争力的可行路径——短期外包解决“燃眉之急”,快速验证AI价值;长期育才筑牢“发展之基”,实现能力内化。…...

这些国产IDE,正在悄悄改变中国开发者的日常

国产 IDE 产业正处于快速发展关键期,技术创新、市场应用与生态建设成效显著,同时也面临多重挑战。未来,在智能化、云原生化、专业化趋势引领下,国产 IDE 有望实现从并跑到领跑的跨越。在上一篇中,我们探讨了国产IDE的发…...

Vivado里SelectIO的LVDS参数怎么设?手把手教你搞定7系列和UltraScale的电压匹配与终端电阻

Vivado中LVDS接口配置实战:7系列与UltraScale的电压匹配与终端电阻详解 在FPGA的高速接口设计中,LVDS(低压差分信号)因其出色的抗干扰能力和低功耗特性,成为跨板卡信号传输的首选方案。但许多工程师在使用Vivado配置Se…...

在Firefly RK3399 ProC上手动编译PyQt5 5.15.2:解决ARM64平台pip安装无whl包的终极方案

在Firefly RK3399 ProC上手动编译PyQt5 5.15.2:解决ARM64平台pip安装无whl包的终极方案 当你在Firefly RK3399 ProC这类ARM64架构的开发板上尝试用pip安装PyQt5时,终端里那行"Could not find a version that satisfies the requirement PyQt5"…...

如何用ChanlunX缠论插件实现股票技术分析自动化:面向新手的实战系统指南

如何用ChanlunX缠论插件实现股票技术分析自动化:面向新手的实战系统指南 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 缠论作为中国股市技术分析的重要理论,其复杂的分型、笔段、…...

金融数据自由之路:5分钟用Finnhub Python API构建你的智能交易系统

金融数据自由之路:5分钟用Finnhub Python API构建你的智能交易系统 【免费下载链接】finnhub-python Finnhub Python API Client. Finnhub API provides institutional-grade financial data to investors, fintech startups and investment firms. We support real…...

5G手机上网卡顿?可能是MAC层BSR机制没搞懂!手把手解析Buffer Status Reporting

5G手机上网卡顿?可能是MAC层BSR机制没搞懂!手把手解析Buffer Status Reporting 你是否遇到过这样的场景:明明手机显示5G信号满格,但上传文件时却频繁卡顿,甚至出现进度条停滞不前的现象?这种看似网络信号良…...

如何5分钟完成Windows系统优化:Chris Titus Tech WinUtil完全指南

如何5分钟完成Windows系统优化:Chris Titus Tech WinUtil完全指南 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 你是否厌倦了每…...

芋道视频199 - 工作流 - 数据流转图 - ruoyi-vue-pro

1. 工作流引擎与Ruoyi-Vue-Pro的深度整合 在Ruoyi-Vue-Pro项目中,工作流引擎扮演着业务流程自动化的核心角色。以请假流程为例,从员工提交申请到领导审批再到HR备案,整个流程涉及多角色协作和状态流转。Flowable作为底层引擎,通过…...

ATF-54143 LNA设计复盘:我是如何权衡噪声、增益与稳定性的(附完整ADS工程)

ATF-54143 LNA设计复盘:噪声、增益与稳定性的深度权衡 在2.4GHz频段的低噪声放大器(LNA)设计中,工程师往往面临噪声系数、增益和稳定性之间的复杂权衡。本文将基于ATF-54143晶体管,分享我在实际项目中如何通过系统化的设计流程解决这些核心矛…...

ESP32 LVGL 8.1样式背景避坑指南:bg_grad_stop设置不对,你的渐变为啥不显示?

ESP32 LVGL 8.1样式背景开发实战:从渐变失效到高级视觉效果的深度解析 在嵌入式GUI开发中,LVGL因其轻量级和丰富的功能而广受欢迎。但当我们尝试在ESP32上实现复杂的样式背景效果时,往往会遇到各种"诡异"现象——特别是渐变效果不显…...

从X86到鲲鹏:除了代码迁移,DevKit的性能分析和调优助手怎么用?

从X86到鲲鹏:DevKit性能调优实战指南 当应用从X86平台迁移到鲲鹏架构后,许多开发者会发现性能表现与预期存在差距。这种差异往往源于架构特性未被充分挖掘,或存在隐藏的内存问题。本文将深入解析如何利用鲲鹏DevKit中的四大核心工具——系统性…...

数字IC面试必问:CMOS反相器尺寸链优化与延时最小化实战解析

数字IC面试必问:CMOS反相器尺寸链优化与延时最小化实战解析 在数字集成电路设计的面试中,CMOS反相器尺寸链优化几乎是必考题。这道题看似简单,却涵盖了器件物理、电路设计和工程权衡的深层逻辑。本文将用工程师的实战视角,拆解反…...

LX Music桌面版终极指南:开源免费的多平台音乐聚合播放器

LX Music桌面版终极指南:开源免费的多平台音乐聚合播放器 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop 还在为不同音乐平台间的切换烦恼吗?想在一个软件…...

用PyTorch复现LeNet:从MNIST手写数字识别到理解卷积神经网络(保姆级代码解析)

用PyTorch实战LeNet:从零构建经典CNN模型并理解其设计哲学 在深度学习的世界里,LeNet就像是一本启蒙读物——它简单到足以让初学者理解,却又深刻到能揭示卷积神经网络(CNN)的核心思想。1998年由Yann LeCun提出的这个架构,不仅成功…...

OpenBoardView:完全免费的.brd电路板文件查看终极指南

OpenBoardView:完全免费的.brd电路板文件查看终极指南 【免费下载链接】OpenBoardView View .brd files 项目地址: https://gitcode.com/gh_mirrors/op/OpenBoardView 还在为昂贵的电路板设计软件而烦恼吗?想要一款真正免费、跨平台、功能强大的.…...

免费开源AMD Ryzen处理器终极调试指南:SMUDebugTool完整教程

免费开源AMD Ryzen处理器终极调试指南:SMUDebugTool完整教程 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…...

CSS如何控制placeholder文字的颜色_使用--placeholder伪元素

Chrome/Firefox中::placeholder颜色不生效,主因是CSS优先级覆盖、浏览器兼容性差异或框架样式重置;需用双冒号语法、兼顾各浏览器前缀、避免内联样式干扰,并通过class而非style动态控制。Chrome/Firefox里::placeholder颜色不生效&#xff1f…...

别再傻傻分不清!EPLAN里连接定义点和电位定义点的核心区别与实战用法

EPLAN电气设计实战:连接定义点与电位定义点的深度解析与应用指南 在EPLAN电气设计软件中,连接定义点(Connection Definition Point)和电位定义点(Potential Definition Point)是两种看似相似却功能迥异的核心元素。许多工程师在使用过程中容易混淆两者&a…...

免费CAD软件LitCAD:3分钟上手的轻量级绘图解决方案终极指南

免费CAD软件LitCAD:3分钟上手的轻量级绘图解决方案终极指南 【免费下载链接】LitCAD A very simple CAD developed by C#. 项目地址: https://gitcode.com/gh_mirrors/li/LitCAD 还在为高昂的CAD软件费用而烦恼吗?或者被复杂的设计工具搞得晕头转…...

别再死记硬背了!用C语言递归搞定二叉树遍历转换(PTA真题7-1保姆级解析)

从手算到代码:二叉树遍历转换的思维跃迁 当你在PTA或LeetCode上遇到"已知后序和中序遍历求先序遍历"这类题目时,是否也曾陷入"先建树再遍历"的思维定式?实际上,这类问题的核心在于发现遍历序列间的隐藏规律&a…...

如何在macOS上高效使用HSTracker:炉石传说智能助手与卡组管理实战指南

如何在macOS上高效使用HSTracker:炉石传说智能助手与卡组管理实战指南 【免费下载链接】HSTracker A deck tracker and deck manager for Hearthstone on macOS 项目地址: https://gitcode.com/gh_mirrors/hs/HSTracker HSTracker是macOS平台上一款专业的炉石…...

告别三极管!用CH340X/C直连搞定CH32/STM32一键下载(附完整电路图与驱动版本避坑)

极简主义嵌入式开发:CH340直连实现CH32/STM32一键下载全攻略 当你在深夜调试一个嵌入式项目,反复插拔USB线、手动切换BOOT跳线、按复位按钮时,是否想过——这些繁琐操作真的有必要吗?传统的一键下载电路通常需要两个三极管构成的逻…...

Docker部署避坑:OpenClaw容器内无法使用代理?网络模式选择建议

“在本地跑得好好的OpenClaw,一放到Docker容器里,代理就不生效了……”“明明docker-compose.yml里配了环境变量,容器里curl也能通,但OpenClaw就是不走代理……”“更离谱的是,容器能ping通外网,但OpenClaw…...

如何免费快速将网页小说转换为EPUB电子书:WebToEpub完整教程

如何免费快速将网页小说转换为EPUB电子书:WebToEpub完整教程 【免费下载链接】WebToEpub A simple Chrome (and Firefox) Extension that converts Web Novels (and other web pages) into an EPUB. 项目地址: https://gitcode.com/gh_mirrors/we/WebToEpub …...

从module变量到intent参数:手把手教你写出更安全、更地道的Fortran子程序

从module变量到intent参数:手把手教你写出更安全、更地道的Fortran子程序 Fortran作为科学计算领域的常青树,其独特的模块化设计和参数传递机制常常让从C/Python转来的开发者感到困惑。本文将带你深入理解module变量的作用域陷阱、参数传递的底层逻辑&am…...

小程序富文本组件mp-html:打破微信原生限制的终极解决方案

小程序富文本组件mp-html:打破微信原生限制的终极解决方案 【免费下载链接】mp-html 小程序富文本组件,支持渲染和编辑 html,支持在微信、QQ、百度、支付宝、头条和 uni-app 平台使用 项目地址: https://gitcode.com/gh_mirrors/mp/mp-html…...

如何在3分钟内为视频添加专业字幕:开源工具终极指南

如何在3分钟内为视频添加专业字幕:开源工具终极指南 【免费下载链接】video-srt-windows 这是一个可以识别视频语音自动生成字幕SRT文件的开源 Windows-GUI 软件工具。 项目地址: https://gitcode.com/gh_mirrors/vi/video-srt-windows 想象一下,…...