|
@@ -777,6 +777,65 @@ func main() {
|
|
|
}
|
|
}
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
+### Support Let's Encrypt
|
|
|
|
|
+
|
|
|
|
|
+example for 1-line LetsEncrypt HTTPS servers.
|
|
|
|
|
+
|
|
|
|
|
+[embedmd]:# (examples/auto-tls/example1.go go)
|
|
|
|
|
+```go
|
|
|
|
|
+package main
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "log"
|
|
|
|
|
+
|
|
|
|
|
+ "github.com/gin-gonic/autotls"
|
|
|
|
|
+ "github.com/gin-gonic/gin"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+func main() {
|
|
|
|
|
+ r := gin.Default()
|
|
|
|
|
+
|
|
|
|
|
+ // Ping handler
|
|
|
|
|
+ r.GET("/ping", func(c *gin.Context) {
|
|
|
|
|
+ c.String(200, "pong")
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ log.Fatal(autotls.Run(r, "example1.com", "example2.com"))
|
|
|
|
|
+}
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+example for custom autocert manager.
|
|
|
|
|
+
|
|
|
|
|
+[embedmd]:# (examples/auto-tls/example2.go go)
|
|
|
|
|
+```go
|
|
|
|
|
+package main
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "log"
|
|
|
|
|
+
|
|
|
|
|
+ "github.com/gin-gonic/autotls"
|
|
|
|
|
+ "github.com/gin-gonic/gin"
|
|
|
|
|
+ "golang.org/x/crypto/acme/autocert"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+func main() {
|
|
|
|
|
+ r := gin.Default()
|
|
|
|
|
+
|
|
|
|
|
+ // Ping handler
|
|
|
|
|
+ r.GET("/ping", func(c *gin.Context) {
|
|
|
|
|
+ c.String(200, "pong")
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ m := autocert.Manager{
|
|
|
|
|
+ Prompt: autocert.AcceptTOS,
|
|
|
|
|
+ HostPolicy: autocert.HostWhitelist("example1.com", "example2.com"),
|
|
|
|
|
+ Cache: autocert.DirCache("/var/www/.cache"),
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ log.Fatal(autotls.RunWithManager(r, m))
|
|
|
|
|
+}
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
### Graceful restart or stop
|
|
### Graceful restart or stop
|
|
|
|
|
|
|
|
Do you want to graceful restart or stop your web server?
|
|
Do you want to graceful restart or stop your web server?
|