@@ -19,6 +19,7 @@ const etag = require('koa-etag');
1919const json = require ( 'koa-json' ) ;
2020const koa404Handler = require ( 'koa-404-handler' ) ;
2121const koaConnect = require ( 'koa-connect' ) ;
22+ const proxyWrap = require ( 'findhit-proxywrap' ) ;
2223const removeTrailingSlashes = require ( 'koa-no-trailing-slash' ) ;
2324const requestId = require ( 'express-request-id' ) ;
2425const requestReceived = require ( 'request-received' ) ;
@@ -27,6 +28,9 @@ const sharedConfig = require('@ladjs/shared-config');
2728const { boolean } = require ( 'boolean' ) ;
2829const { ratelimit } = require ( 'koa-simple-ratelimit' ) ;
2930
31+ const proxiedHttp = proxyWrap . proxy ( http ) ;
32+ const proxiedHttps = proxyWrap . proxy ( https ) ;
33+
3034class API {
3135 constructor ( config ) {
3236 this . config = {
@@ -167,11 +171,20 @@ class API {
167171 else app . use ( this . config . routes ) ;
168172 }
169173
174+ const createServer =
175+ this . config . protocol === 'https'
176+ ? this . config . proxyProtocol
177+ ? proxiedHttps . createServer
178+ : https . createServer
179+ : this . config . proxyProtocol
180+ ? proxiedHttp . createServer
181+ : http . createServer ;
182+
170183 // start server on either http or https
171184 if ( this . config . protocol === 'https' )
172- server = https . createServer ( this . config . ssl , app . callback ( ) ) ;
185+ server = createServer ( this . config . ssl , app . callback ( ) ) ;
173186 // server = http2.createSecureServer(this.config.ssl, app.callback());
174- else server = http . createServer ( app . callback ( ) ) ;
187+ else server = createServer ( app . callback ( ) ) ;
175188
176189 // expose app, server, client
177190 this . app = app ;
0 commit comments