支持https访问

文章目录

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

1. 打开自己的云服务器的 80 和 443 端口

打开某为云官网 https://console.huaweicloud.com/



2. 安装 nginx

shell 复制代码
sudo apt update
sudo apt-get install nginx
nginx -v

3. 安装 snapd

shell 复制代码
sudo apt install snapd
sudo apt-get remove certbot

4. 安装 certbot

shell 复制代码
sudo snap install --classic certbot

5. 生成证书

shell 复制代码
sudo certbot certonly --nginx

6. 拷贝生成的证书到项目工作目录

shell 复制代码
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 程序如下

go 复制代码
package main

import (
  "fmt"
  "net/http"
)

func main() {
  // 1.定义一个 URL 前缀
  staticURL := "/static/"
  // 2.定义一个 FileServer
  fs := http.FileServer(http.Dir("./static"))
  // 3.绑定 url 和 FileServer
  http.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. 编译程序

shell 复制代码
sh build.sh
shell 复制代码
#!/bin/bash
go build -o screen_share src/*

9. 启动程序

shell 复制代码
./screen_share

10. 使用 https 和端口 8081 访问页面成功

shell 复制代码
https://www.liangzixuexi.com:8081/static/share.html

但是现在只能通过 https 访问,原来的 http 不能访问了

11. 下面修改程序,支持 https 和 http 能同时访问

go 复制代码
package main

import (
  "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.定义一个 FileServer
  fs := http.FileServer(http.Dir("./static"))
  // 3.绑定 url 和 FileServer
  http.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.启动 HttpsServer
  startHttps(":8081", "./conf/fullchain.pem", "./conf/privkey.pem")
}

12. 编译

shell 复制代码
sh build.sh

13. 启动程序

shell 复制代码
./screen_share

14. 使用 http 和 8080 端口访问成功

输入 http://www.liangzixuexi.com:8080/static/share.html

15. 使用 https 和 8081 端口访问成功

输入 https://www.liangzixuexi.com:8081/static/share.html

相关推荐
雪碧聊技术21 分钟前
HTTP 核心知识点速查表
网络·网络协议·http
2501_915106322 小时前
HTTPS 爬虫实战指南 从握手原理到反爬应对与流量抓包分析
爬虫·网络协议·ios·小程序·https·uni-app·iphone
2501_916007472 小时前
iOS 上架技术支持全流程解析,从签名配置到使用 开心上架 的实战经验分享
android·macos·ios·小程序·uni-app·cocoa·iphone
歪歪1004 小时前
如何在Qt中使用VS的调试功能
运维·开发语言·网络·qt·网络协议·visual studio
静若繁花_jingjing10 小时前
面试_项目问题_RPC调用异常
网络·网络协议·rpc
せいしゅん青春之我11 小时前
[JavaEE初阶] 防止网络传输中的中间人入侵---证书
服务器·网络·网络协议·java-ee
Yeats_Liao14 小时前
Go Web 编程快速入门 · 04 - 请求对象 Request:头、体与查询参数
前端·golang·iphone
问道飞鱼14 小时前
【HTTP知识】HTTP OPTIONS 预检请求深度解析与优化策略
网络·网络协议·http·option·预检
qq_4090229517 小时前
计算机网络
网络协议·tcp/ip·信息与通信
2501_9160074718 小时前
提升 iOS 26 系统流畅度的实战指南,多工具组合监控
android·macos·ios·小程序·uni-app·cocoa·iphone