如果代理正在转发,Golang中的AutoCert是否可以使用自定义端口?

如果代理正在转发,Golang中的AutoCert是否可以使用自定义端口?,go,lets-encrypt,lets-encrypt-webapp-renewer,autocert,Go,Lets Encrypt,Lets Encrypt Webapp Renewer,Autocert,在Golang,使用autocert,我一直看到这样的例子: server := &http.Server{ Addr: ":https", Handler: r, TLSConfig: &tls.Config{ GetCertificate: certManager.GetCertificate, }, } go http.ListenAndServe(":h

在Golang,使用autocert,我一直看到这样的例子:

server := &http.Server{
        Addr:      ":https",
        Handler:   r,
        TLSConfig: &tls.Config{
            GetCertificate: certManager.GetCertificate,
        },
    }

    go http.ListenAndServe(":http", certManager.HTTPHandler(nil))
但是,我有一个服务器,有许多站点(go应用),我使用NGINX代理流量。我可以这样做吗

server := &http.Server{
        Addr:      ":8443",
        Handler:   r,
        TLSConfig: &tls.Config{
            GetCertificate: certManager.GetCertificate,
        },
    }

    go http.ListenAndServe(":8080", certManager.HTTPHandler(nil))
如果没有,是否有其他解决方案

如果是这样的话,我不确定我会做错什么。我确实看到certManager.GetCertificate方法的返回之一是错误


所以,这个问题的第二部分是,如何捕获certManager.GetCertificate的错误?我的应用程序加载和编译都很好。不会抛出错误。

您使用autocert的方式看起来是正确的。您在使用此证书时遇到任何问题吗?@iwasidiotic是的,但由于certManager.GetCertificate的使用方式,我看不到任何错误。我怎样才能看到那里的错误?临时文件夹已创建,但未将证书放入其中。谢谢如果进行负载平衡,则在使用HTTP-01时,可能很难在所有节点上分发相同的令牌。要使HTTP-01成功,端口80必须打开,并在正确的url处使用相应的密码进行响应。对于TLS-ALPN-01,ssl终止不能在设置的nginx端完成。如果你浏览这个,他们建议使用DNS-01。我建议你阅读letsencrypt文档。若要注销,我将编写一个捕获并记录错误的客户端。我已经放置了客户端(最后一句话),但我只是想进行分叉和更新。在服务器变量作用域之外使用
certManager.GetCertificate,
进行错误处理,然后将变量传递给作用域变量,如
cert,err:=certManager.GetCertificate()如果出错=nil{fmt.Println(err)}
,通常您的
certManager.GetCertificate
应该返回一个错误