Golang实现http重定向https

 更新时间:2022-08-09 08:51:17   作者:佚名   我要评论(0)

用golang来实现的webserver通常是是这样的
//main.go
package main

import (
"fmt"
"io"
"net/http"
)

func defaultHandler(w http.Res

用golang来实现的webserver通常是是这样的

//main.go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func defaultHandler(w http.ResponseWriter, r *http.Request) {
	io.WriteString(w, "<h1>Golang HTTP</h1>")
}

func main() {
	mux := http.NewServeMux()
	mux.HandleFunc("/", defaultHandler)
	err := http.ListenAndServe(":80", mux)
	if err != nil {
		fmt.Println(err.Error())
	}
}

服务运行后,我们通常通过http://localhost的形式来访问,
而我们要实现的是通过https://localhost的形式来访问.

那么如何用golang来实现HTTPS呢?

//main.go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func defaultHandler(w http.ResponseWriter, r *http.Request) {
	io.WriteString(w, "<h1>Golang HTTPS</h1>")
}

func main() {
	mux := http.NewServeMux()
	mux.HandleFunc("/", defaultHandler)
	certFile := "/etc/letsencrypt/live/www.taadis.com/cert.pem"
	keyFile := "/etc/letsencrypt/live/www.taadis.com/privkey.pem"
	err := http.ListenAndServeTLS(":443", certFile, keyFile, mux)
	if err != nil {
		fmt.Println(err.Error())
	}
}

源码比较简单,主要是把http.ListenAndServe()替换成ListenAndServeTLS()。其次注意下端口号的区别,还有就是CA证书的问题,这里我采用了Let's Encrypt。

到此这篇关于Golang实现http重定向https的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
  • 使用Go添加HTTPS的实现代码示例
  • 详解Golang实现http重定向https的方式
  • 在 Django/Flask 开发服务器上使用 HTTPS
  • Go语言HTTPServer开发的六种方式小结
  • Django项目如何获得SSL证书与配置HTTPS
  • golang的httpserver优雅重启方法详解

相关文章

  • Golang实现http重定向https

    Golang实现http重定向https

    用golang来实现的webserver通常是是这样的 //main.go package main import ( "fmt" "io" "net/http" ) func defaultHandler(w http.Res
    2022-08-09
  • linux目录管理方法介绍

    linux目录管理方法介绍

    一、目录结构 目录也是一个文件,它的唯一功能是用来保存文件及其相关信息。所有的文件,包括普通文件、设备文件和目录文件,都会被保存到目
    2022-08-09
  • Linux中Vi和Vim编辑器用法详解

    Linux中Vi和Vim编辑器用法详解

    目录一、简介二、安装VIM美化vim三、进入 vi\VIM 编辑器四、工作模式三种工作模式:五、退出 vi 编辑器六、移动光标七、控制命令八、编辑文件
    2022-08-09
  • python使用pip成功导入库后还是报错的解决方法(针对vscode)

    python使用pip成功导入库后还是报错的解决方法(针对vscode)

    目录前言分析产生问题的原因重点解决第二个问题补充的问题——python代码有黄色的波浪线(定期补充)总结前言 写在开始前:其实出
    2022-08-09
  • Python?Behave框架学习

    Python?Behave框架学习

    behave是python语言的行为驱动开发,全称:Behavior-driven development,简称BDD。 BDD框架 BDD即行为驱动开发(Behavior Driven Developme
    2022-08-09
  • 详解pygame中Rect对象

    详解pygame中Rect对象

    目录class pygame.Rect Rect对象的属性:方法剪切图片的应用class pygame.Rect Rect 对象的属性: Rect 表示的区域必须位于一个 Surface 对象
    2022-08-09
  • Go语言中的变量和常量

    Go语言中的变量和常量

    一、变量相关 1.变量声明 C# : int a; Go : var a int; 需要在前面加一个var关键字,后面定义类型 可以使用 var( a int; b string;)减少va
    2022-08-09
  • Go实现替换(覆盖)文件某一行内容的示例代码

    Go实现替换(覆盖)文件某一行内容的示例代码

    目录1、前言2、实现覆盖某一行文件内容的思路3、实现覆盖某一行内容的代码示例4、扩展1、前言 有这样一个需求,我们查找到文件中带有某个关键
    2022-08-09
  • go面向对象方式操作JSON库实现四则运算

    go面向对象方式操作JSON库实现四则运算

    目录前言面向对象的方式操作 JSON实现原理对 JSON 做四则运算总结前言 在之前实现的 JSON 解析器中当时只实现了将一个 JSON 字符串转换为一个
    2022-08-09
  • 手把手教你利用Python创建一个游戏窗口

    手把手教你利用Python创建一个游戏窗口

    目录前言 安装Pyagme检查是否安装Pygame: 一 (检查python是否配置环境变量)检查是否安装Pygame: 二 (检查pygame是否安装)未安装Pygame : 一
    2022-08-09

最新评论