为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
杨魅力 2023-05-15 10:17:59
我有一个非常简单的go https 网络服务器这是代码:package mainimport (    // "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 8085tcp6       0      0 :::8085                 :::*                    LISTEN      23429/hello$ sudo ufw status | grep 80858085/tcp                   ALLOW       Anywhere8085/tcp (v6)              ALLOW       Anywhere (v6)所以当我尝试从另一台机器:$ curl -sL https://example.com:8085404 page not found在 DigitalOcean 上运行的 Web 服务器。我需要以某种方式配置我的 Droplet 吗?不确定我错过了什么?我还有certificate.crt, certificate_ca.crt, certificate.csr从卖给我域名的公司那里得到的文件。我应该以某种方式使用这些文件吗?我需要这个用于 OAuth 重定向 URI。
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

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


如果您尝试加载,https://example.com:8085/hello那么您会看到示例文本。


您还可以为 设置路线/,例如:


 http.HandleFunc("/", HelloServer)

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


    if req.URL.Path != "/" {

        http.NotFound(w, req)

        return

    }

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


查看完整回答
反对 回复 2023-05-15
  • 1 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信