我是刚来Golang的新手,我建立了一个"你好,世界!"在我们的VPS上测试Golang API的消息.http://www.example.com:8080/hello点的时候就可以了.不过,我想转到HTTPS.

有人能告诉我golang API从HTTP到HTTPS的正确步骤吗?非常感谢.

如果golang代码存在问题:

package main

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

func main() {
        http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
                fmt.Fprintf(w, "Hello, World")
        })

        fmt.Println("Server Started On Port 8080")
        log.Fatal(http.ListenAndServe(":8080", nil))
}

推荐答案

感谢约翰·汉利对这个问题的支持.

Listen 80

<IfModule ssl_module>
        Listen 443
        Listen 8443
</IfModule>

然后我在示例的配置中添加了一个VirtualHost.com域,以便端口8443充当代理:

<VirtualHost *:8443>
        ServerAdmin admin@example.com
        ServerName www.example.com
        ServerAlias example.com

        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
        ProxyPass / http://localhost:8080/
        ProxyPassReverse / http://localhost:8080/

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

       Include /etc/letsencrypt/options-ssl-apache.conf
       SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
       SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>

您需要使用e2enmod proxye2enmod proxy_http加载模块proxy和proxy_http.

Go相关问答推荐

map 中的多个函数类型,Golang

更改位置级别和时间戳零点Golang

在整个SQL事务中将使用上下文作为默认设置吗?

当我有外键时,如何使用 GORM 创建数据库的新条目

如何使用 AWS sdk 在 Go 中正确解组 PartiQL 查询的结果?

该文件位于模块.内,该模块不包含在您的工作区中

命令行参数在 Golang 程序中不正确地接受为参数

如何将验证器标记添加到嵌套字段

有没有办法在 Golang 中使用带有 go-simple-mail lib 的代理?

如何在 gocql 中设置最大池大小?

设置指向空接口的指针

如何模仿联合类型

如何将 npm 安装进度条通过管道传输到终端?

如何在 Unmarshal 中使用泛型(转到 1.18)

如何从字符串中删除多个换行符`\n`但只保留一个?

Golang 'defer' 导致发送(接收)API 响应延迟

如何获得Ent中数字列的总和

Go 错误:Is() 和 As() 声称是递归的,是否有任何类型实现错误接口并支持这种递归 - 无错误?

Go http标准库中的内存泄漏?

更改单个像素的 colored颜色 - Golang 图像