自己的https certbot网络服务器返回我的404页面未找到

时间:2018-11-29 20:58:06

标签: ssl go https digital-ocean certbot

我有一个非常简单的go https web server

这是代码:

package main

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

func HelloServer(w http.ResponseWriter, req *http.Request) {
    w.Header().Set("Content-Type", "text/plain")
    w.Write([]byte("This is an example server.\n"))
    // fmt.Fprintf(w, "This is an example server.\n")
    // io.WriteString(w, "This is an example server.\n")
}

func main() {
    http.HandleFunc("/hello", HelloServer)
    err := http.ListenAndServeTLS(":8085", "fullchain.pem", "privkey.pem", nil)
//    err := http.ListenAndServeTLS(":8085", "certificate_ca.crt", "certificate.csr", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

它侦听由隔离墙打开的端口8085。 我使用certbot生成的SSL证书:

sudo certbot certonly --standalone -d example.com

因此,我使用以下生成的文件构建了Web服务器:

err := http.ListenAndServeTLS(":8085", "fullchain.pem", "privkey.pem", nil)

这是端口状态:

$ sudo netstat -tulpn | grep 8085
tcp6       0      0 :::8085                 :::*                    LISTEN      23429/hello

$ sudo ufw status | grep 8085
8085/tcp                   ALLOW       Anywhere
8085/tcp (v6)              ALLOW       Anywhere (v6)

因此,当我尝试从另一台计算机上访问时:

$ curl -sL https://example.com:8085
404 page not found

Web服务器在DigitalOcean上运行。我需要以某种方式配置我的液滴吗?不知道我错过了什么? 另外,我还有certificate.crt, certificate_ca.crt, certificate.csr个文件,这些文件是从向我出售域名的公司获得的。我应该以某种方式使用此文件吗? 我需要OAuth重定向URI。

1 个答案:

答案 0 :(得分:1)

您已为URL路径miniSdkVersion配置了处理程序,但尚未为路径/hello配置处理程序。因此,当您尝试加载该路径时,会得到404。

如果您尝试加载/,则将看到示例文本。

您还可以为https://example.com:8085/hello设置路线,例如:

/

请注意,因为这匹配所有可能的URL,所以如果您只想匹配首页,则需要显式检查URL,例如:

 http.HandleFunc("/", HelloServer)

您还应该考虑使用更灵活的多路复用器,例如大猩猩/多路复用器。