aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorGravatar Erik Dubbelboer <erik@dubbelboer.com> 2020-07-11 20:40:19 +0200
committerGravatar Erik Dubbelboer <erik@dubbelboer.com> 2020-07-11 20:40:19 +0200
commitf97a382d80953ea8d48f7cb021d3924396833284 (patch)
tree30092c1998ab0a7db5af6bc7522e82b5df22e17f /examples
parentupdate link to router package (#842) (diff)
downloadfasthttp-f97a382d80953ea8d48f7cb021d3924396833284.tar.gz
fasthttp-f97a382d80953ea8d48f7cb021d3924396833284.tar.bz2
fasthttp-f97a382d80953ea8d48f7cb021d3924396833284.zip
Add letsencrypt example
Diffstat (limited to 'examples')
-rw-r--r--examples/letsencrypt/letsencryptserver.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/examples/letsencrypt/letsencryptserver.go b/examples/letsencrypt/letsencryptserver.go
new file mode 100644
index 0000000..b6a0b91
--- /dev/null
+++ b/examples/letsencrypt/letsencryptserver.go
@@ -0,0 +1,40 @@
+package main
+
+import (
+ "crypto/tls"
+ "net"
+
+ "github.com/valyala/fasthttp"
+ "golang.org/x/crypto/acme"
+ "golang.org/x/crypto/acme/autocert"
+)
+
+func requestHandler(ctx *fasthttp.RequestCtx) {
+ ctx.SetBodyString("hello from https!")
+}
+
+func main() {
+ m := &autocert.Manager{
+ Prompt: autocert.AcceptTOS,
+ HostPolicy: autocert.HostWhitelist("example.com"), // Replace with your domain.
+ Cache: autocert.DirCache("./certs"),
+ }
+
+ cfg := &tls.Config{
+ GetCertificate: m.GetCertificate,
+ NextProtos: []string{
+ "http/1.1", acme.ALPNProto,
+ },
+ }
+
+ ln, err := net.Listen("tcp4", "0.0.0.0:443") // Let's Encrypt tls-alpn-01 only works on port 443.
+ if err != nil {
+ panic(err)
+ }
+
+ lnTls := tls.NewListener(ln, cfg)
+
+ if err := fasthttp.Serve(lnTls, requestHandler); err != nil {
+ panic(err)
+ }
+}