@@ -30,6 +30,7 @@ import (
30
30
"strconv"
31
31
"strings"
32
32
33
+ "github.com/NYTimes/gziphandler"
33
34
"github.com/pkg/errors"
34
35
"github.com/rs/zerolog"
35
36
"github.com/soheilhy/cmux"
@@ -58,6 +59,17 @@ type Server struct {
58
59
serverPort string
59
60
}
60
61
62
+ var gzipContentTypes = []string {
63
+ "text/html" ,
64
+ "text/plain" ,
65
+ "text/csv" ,
66
+ "text/javascript" ,
67
+ "text/css" ,
68
+ "application/json" ,
69
+ "application/javascript" ,
70
+ "application/vnd.api+json" ,
71
+ }
72
+
61
73
// Start starts the server
62
74
func (s * Server ) Start (errChan chan error ) (int , error ) {
63
75
ln , port , err := process .CreateListener (s .Port , s .PreferredPort )
@@ -66,8 +78,14 @@ func (s *Server) Start(errChan chan error) (int, error) {
66
78
}
67
79
s .serverPort = strconv .Itoa (port )
68
80
81
+ gzipWrapper , err := gziphandler .GzipHandlerWithOpts (gziphandler .ContentTypes (gzipContentTypes ))
82
+
83
+ if err != nil {
84
+ return port , err
85
+ }
86
+
69
87
s .httpserver = & http.Server {
70
- Handler : http .HandlerFunc (s .ProxyHandler ),
88
+ Handler : gzipWrapper ( http .HandlerFunc (s .ProxyHandler ) ),
71
89
}
72
90
if s .PKCS12 == "" {
73
91
go func () {
@@ -83,7 +101,7 @@ func (s *Server) Start(errChan chan error) (int, error) {
83
101
}
84
102
85
103
s .httpsserver = & http.Server {
86
- Handler : http .HandlerFunc (s .ProxyHandler ),
104
+ Handler : gzipWrapper ( http .HandlerFunc (s .ProxyHandler ) ),
87
105
TLSConfig : & tls.Config {
88
106
PreferServerCipherSuites : true ,
89
107
CurvePreferences : []tls.CurveID {tls .CurveP521 , tls .CurveP384 , tls .CurveP256 },
0 commit comments