支持https访问
文章目录
- 1. 打开自己的云服务器的 80 和 443 端口
- 2. 安装 nginx
- 3. 安装 snapd
- 4. 安装 certbot
- 5. 生成证书
- 6. 拷贝生成的证书到项目工作目录
- 7. 修改 main.go 程序如下
- 8. 编译程序
- 9. 启动程序
- 10. 使用 https 和端口 8081 访问页面成功
- 11. 下面修改程序,支持 https 和 http 能同时访问
- 12. 编译
- 13. 启动程序
- 14. 使用 http 和 8080 端口访问成功
- 15. 使用 https 和 8081 端口访问成功
1. 打开自己的云服务器的 80 和 443 端口
打开某为云官网 https://console.huaweicloud.com/








2. 安装 nginx
sudo apt update
sudo apt-get install nginx
nginx -v
3. 安装 snapd
sudo apt install snapd
sudo apt-get remove certbot
4. 安装 certbot
sudo snap install --classic certbot
5. 生成证书
sudo certbot certonly --nginx

6. 拷贝生成的证书到项目工作目录
cd ~/dev/go/screen_share
mkdir conf
cp /etc/letsencrypt/live/www.liangzixuexi.com/fullchain.pem ~/dev/go/screen_share/conf/
cp /etc/letsencrypt/live/www.liangzixuexi.com/privkey.pem ~/dev/go/screen_share/conf/

7. 修改 main.go 程序如下
package mainimport ("fmt""net/http"
)func main() {// 1.定义一个 URL 前缀staticURL := "/static/"// 2.定义一个 FileServerfs := http.FileServer(http.Dir("./static"))// 3.绑定 url 和 FileServerhttp.Handle(staticURL, http.StripPrefix(staticURL, fs))// 4.启动 HttpServer//err := http.ListenAndServe(":8080",nil)err := http.ListenAndServeTLS(":8081", "./conf/fullchain.pem", "./conf/privkey.pem", nil)if err != nil {fmt.Println(err)}
}
8. 编译程序
sh build.sh

#!/bin/bash
go build -o screen_share src/*
9. 启动程序
./screen_share
10. 使用 https 和端口 8081 访问页面成功
https://www.liangzixuexi.com:8081/static/share.html

但是现在只能通过 https 访问,原来的 http 不能访问了
11. 下面修改程序,支持 https 和 http 能同时访问
package mainimport ("fmt""net/http"
)func startHttp(port string){fmt.Printf("Start Http port: %s\n", port)err := http.ListenAndServe(port, nil)if err != nil {fmt.Println(err)}
}func startHttps(port, cert, key string){fmt.Printf("Start Https port: %s\n", port)err := http.ListenAndServeTLS(port, cert, key, nil)if err != nil {fmt.Println(err)}
}func main() {// 1.定义一个 URL 前缀staticURL := "/static/"// 2.定义一个 FileServerfs := http.FileServer(http.Dir("./static"))// 3.绑定 url 和 FileServerhttp.Handle(staticURL, http.StripPrefix(staticURL, fs))// 4.启动 HttpServer//err := http.ListenAndServe(":8080",nil)go startHttp(":8080")//err := http.ListenAndServeTLS(":8081", "./conf/fullchain.pem", "./conf/privkey.pem", nil)// 5.启动 HttpsServerstartHttps(":8081", "./conf/fullchain.pem", "./conf/privkey.pem")
}
12. 编译
sh build.sh

13. 启动程序
./screen_share

14. 使用 http 和 8080 端口访问成功
输入 http://www.liangzixuexi.com:8080/static/share.html

15. 使用 https 和 8081 端口访问成功
输入 https://www.liangzixuexi.com:8081/static/share.html

相关文章:
支持https访问
文章目录 1. 打开自己的云服务器的 80 和 443 端口2. 安装 nginx3. 安装 snapd4. 安装 certbot5. 生成证书6. 拷贝生成的证书到项目工作目录7. 修改 main.go 程序如下8. 编译程序9. 启动程序10. 使用 https 和端口 8081 访问页面成功11. 下面修改程序,支持 https 和…...
JavaScript 中常用简写技巧总结
平时我们写代码时最高级的境界是自己写的东西别人看不懂!哈哈哈!分享一些自己常用的js简写技巧,长期更新,会着重挑选一些实用的简写技巧,使自己的代码更简洁优雅~ 这里只会收集一些大多数人不知道的用法,但…...
第15集丨Vue 江湖 —— 组件
目录 一、为什么需要组件1.1 传统方式编写应用1.2 使用组件方式编写应用1.3 Vue的组件管理 二、Vue中的组件1.1 基本概念1.1.1 组件分类1.1.2 Vue中使用组件的三大步骤:1.1.3 如何定义一个组件1.1.4 如何注册组件1.1.5 如何使用组件 1.2 注意点1.2.1 关于组件名1.2.2 关于组件标…...
【JVM】CPU飙高排查方案与思路
文章目录 CPU飙高排查方案与思路 CPU飙高排查方案与思路 1.使用top命令查看占用cpu的情况 2.通过top命令查看后,可以查看是哪一个进程占用cpu较高,上图所示的进程为:40940 3.查看进程中的线程信息 4.可以根据进程 id 找到有问题的线程&a…...
使用公网访问内网IIS网站服务器【无需公网IP】
使用公网访问内网IIS网站服务器【无需公网IP】 文章目录 使用公网访问内网IIS网站服务器【无需公网IP】前言1. 注册并安装cpolar2. 创建隧道映射3. 获取公网地址 前言 这里介绍通过内网穿透,实现公网访问内网IIS网站服务器。 都知道,现在基本不会被分配…...
Vim学习(二)—— 编译C程序
打开终端,这里以MobaXterm为例, 邮件创建新的空文件并命名, 然后cd到对应路径下,用 vim hello.cvim打开创建的文件,进入编辑模式,编辑完程序后按Esc退出编辑模式,输入 :wq保存并退出…...
【maven】常见命令
文章目录 1. 打包编译时跳过测试2.显示maven依赖树3. 显示maven依赖列表4. 下载依赖包的源码5. 安装本地jar到本地仓库 1. 打包编译时跳过测试 mvn clean install -DskipTests mvn clean install -Dmaven.test.skiptrueDskipTests,不执行测试用例,但编译…...
vue单项数据传输流式回复功能,post传值可关闭请求(@microsoft/fetch-event-source)
需求:实现一个类似于文心一言ai回复功能,一个字一个字往外蹦,不使用websocket还有什么其他方案呢?经过查询有一个 microsoft/fetch-event-source单向传输协议(服务端传输客户端)。废话不多说,上…...
“深入探究JVM内部机制:理解Java虚拟机的工作原理“
标题:深入探究JVM内部机制:理解Java虚拟机的工作原理 摘要:本文将深入分析Java虚拟机(JVM)的工作原理,包括类加载、内存管理、垃圾回收和即时编译等方面。通过详细解释这些概念,并给出示例代码…...
ubuntu18.04下配置muduoC++11环境
1.安装muduo依赖的编译工具及库 Cmake sudo apt-get install cmakeBoost sudo apt-get install libboost-dev libboost-test-devcurl、c-ares DNS、google protobuf sudo apt-get install libcurl4-openssl-dev libc-ares-dev sudo apt-get install protobuf-compiler libp…...
leetcode 力扣刷题 数组交集(数组、set、map都可实现哈希表)
数组交集 349. 两个数组的交集排序+双指针数组实现哈希表unordered_setunordered_map 350. 两个数组的交集Ⅱ排序 双指针数组实现哈希表unordered_map 349. 两个数组的交集 题目链接:349. 两个数组的交集 题目内容如下,理解题意:…...
JVM元空间溢出的排除思路
背景: java的应用我们为了防止元空间的无限扩展,一般都会设置MaxMetaSpace参数,一般来说只要这个值是512M或者1G左右就足够了,不过今天遇到一个meta空间溢出问题,简单记录下排除的思路 meta元空间溢出 最开始的现象…...
vue+java实现在线播放mp4视频
java: 读取本地视频文件的流然后给response的输出流 File file new File("/Users/zhangqingtian/Documents/水库/Floodforecast/static/" videoName);BufferedInputStream inputStream new BufferedInputStream(new FileInputStream(file));response.setContentT…...
手机两个卡槽的正确使用方法,您用对了吗?
手机上有两个卡槽,该如何搭配才能使话费降到最低?你又是怎么搭配的? 这篇文章小编就来告诉你,如何在不换号的情况下,将自己的话费降到最低。 首先卡槽一我们就用8元保号套餐。 卡槽二,我们就可以办理一张…...
PyTorch翻译官网教程-NLP FROM SCRATCH: CLASSIFYING NAMES WITH A CHARACTER-LEVEL RNN
官网链接 NLP From Scratch: Classifying Names with a Character-Level RNN — PyTorch Tutorials 2.0.1cu117 documentation 使用CHARACTER-LEVEL RNN 对名字分类 我们将建立和训练一个基本的字符级递归神经网络(RNN)来分类单词。本教程以及另外两个“from scratch”的自然…...
基于注意力神经网络的深度强化学习探索方法:ARiADNE
ARiADNE:A Reinforcement learning approach using Attention-based Deep Networks for Exploration 文章目录 ARiADNE:A Reinforcement learning approach using Attention-based Deep Networks for Exploration机器人自主探索(ARE)ARE的传统边界法非短视路径深度强化学习的方…...
Martin_DHCP_V3.0 (DHCP自动化泛洪攻击GUI)
Github>https://github.com/MartinxMax/Martin_DHCP_V3.0 首页 Martin_DHCP_V3.0 自动化DHCP洪泛攻击 Martin_DHCP_V3.0 使用方法 安装三方库 #python3 1.RunMe_Install_Packet.py 攻击路由器 #python3 Martin_DHCP_Attack.py 填写网卡 填写攻击次数 开始运行...
vscode vue3+vite 配置eslint
vue2webpackeslint配置 目前主流项目都在使用vue3vite,因此针对eslint的配置做了一下总结。 引入ESlint、pritter 安装插件,执行以下命令 // eslint // prettier // eslint-plugin-vue // eslint-config-prettier // eslint-plugin-prettier yarn ad…...
【C++学习手札】一文带你初识运算符重载
食用指南:本文在有C基础的情况下食用更佳 🍀本文前置知识: C类 ♈️今日夜电波:クリームソーダとシャンデリア—Edo_Ame江户糖 1:20 ━━━━━━️💟──────── 3:40 …...
javaScript:数组检测
目录 一.前言 二.数组检测方法 1.every() 2.some() 3.filter() 一.前言 数组检测是指在编程中对数组进行验证和检查的过程。数组检测可以涉及以下方面: 确定数组的存在:在使用数…...
答辩前一天才慌?paperxie 帮我把毕业论文 PPT 的 “地狱副本” 打成了 “新手教程”
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 距离本科毕业论文答辩只剩 3 天,我对着空白的 PPT 页面,第 10 次删掉了刚写好的标题。 导师说我的内…...
告别开机黑屏:搞懂UEFI、CSM和Secure Boot的‘三角关系’,装机不求人
现代计算机启动架构解密:UEFI、CSM与Secure Boot的协同与冲突 开机黑屏是许多DIY装机用户和技术爱好者常遇到的棘手问题。当新硬件遇上旧设备,或是现代系统需要兼容传统软件时,计算机的启动过程往往成为第一道技术壁垒。要真正理解这些兼容性…...
从零搭建现代化Go开发环境:模块化、工具链与最佳实践
1. 项目概述:为什么需要一个现代化的Go开发环境? 如果你刚开始接触Go语言,或者刚从其他语言(比如Java、Python)转过来,可能会觉得“不就是装个Go编译器,配个环境变量吗?”。确实&am…...
3分钟快速上手:MetaTube插件为Jellyfin/Emby自动刮削完整元数据指南
3分钟快速上手:MetaTube插件为Jellyfin/Emby自动刮削完整元数据指南 【免费下载链接】jellyfin-plugin-metatube MetaTube Plugin for Jellyfin/Emby 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-metatube MetaTube插件是专为Jellyfin和Em…...
iPhone 14上跑出0.8ms延迟!SwiftFormer加性注意力实战:从论文到移动端部署避坑指南
iPhone 14上实现0.8ms延迟:SwiftFormer移动端部署全流程实战 当我在iPhone 14 Pro上首次看到SwiftFormer-L1模型以0.8毫秒完成图像分类时,手中的咖啡杯差点滑落——这个速度已经快于人眼单次眨动的1/10时长。作为长期奋战在移动端AI部署一线的工程师&am…...
RK3568平台OpenCV交叉编译实战:从源码到部署的完整指南
1. 项目概述:为什么要在RK3568上折腾OpenCV?最近在做一个基于瑞芯微RK3568芯片的边缘计算盒子项目,其中一个核心需求就是要在设备上跑实时的图像识别算法。算法框架选型时,我们团队内部有过一些讨论,最终还是决定用Ope…...
终极指南:如何用FFmpeg Batch AV Converter轻松实现批量视频转换
终极指南:如何用FFmpeg Batch AV Converter轻松实现批量视频转换 【免费下载链接】ffmpeg_batch FFmpeg Batch AV Converter 项目地址: https://gitcode.com/gh_mirrors/ff/ffmpeg_batch 你是否曾经需要同时处理多个视频文件,却因为复杂的命令行参…...
Perplexity查不出薛定谔方程推导?紧急修复指南:4步重置知识图谱权重,实测响应准确率从62%→98.7%
更多请点击: https://intelliparadigm.com 第一章:Perplexity物理知识查询 Perplexity 是一款基于大语言模型的实时网络增强型问答工具,其在物理知识查询场景中展现出独特优势:它能动态检索权威物理数据库(如NIST、ar…...
保姆级教程:在ENVI5.3里搞定高分二号多光谱数据(辐射定标+大气校正+正射)
高分二号多光谱数据预处理全流程实战指南 第一次接触遥感影像处理的研究者,面对国产高分卫星数据时往往既兴奋又忐忑。高分二号(GF-2)作为我国自主研制的高分辨率对地观测系统重要组成部分,其多光谱数据在农业监测、环境评估等领域…...
2026年国产数据库大盘点与趋势:自主可控时代的数据库生态
一、2026年国产数据库市场概况 1. 市场发展现状 2026年国产数据库市场呈现稳步增长态势。在信创政策深化、数据安全法规完善的大背景下,数据库作为核心基础软件,其国产化进程持续推进。 2026年主要厂商市场表现: 金仓KES:在政务领…...
