✨ feat: add initial webserver setup with Express and proxy middleware
This commit is contained in:
17
webserver/package.json
Normal file
17
webserver/package.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "webserver",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "webserver.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "Sebastian Frank",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"connect-history-api-fallback": "^1.6.0",
|
||||
"express": "^4.17.2",
|
||||
"http-proxy-middleware": "^2.0.2",
|
||||
"morgan": "^1.10.0"
|
||||
}
|
||||
}
|
||||
66
webserver/webserver.js
Normal file
66
webserver/webserver.js
Normal file
@@ -0,0 +1,66 @@
|
||||
var express = require("express")
|
||||
var morgan = require("morgan")
|
||||
var { createProxyMiddleware } = require("http-proxy-middleware")
|
||||
var historyFallback = require("connect-history-api-fallback")
|
||||
var app = express()
|
||||
app.use(morgan("dev"))
|
||||
|
||||
var port = process.env.PORT || 3000
|
||||
var host = process.env.HOST || "0.0.0.0"
|
||||
var api = process.env.API
|
||||
var index = process.env.INDEX
|
||||
var ssr = process.env.SSR
|
||||
|
||||
var apiFrom = ""
|
||||
var apiTo = ""
|
||||
|
||||
if (api) {
|
||||
var _api = api.split(":")
|
||||
apiFrom = _api[0]
|
||||
for (var i = 1; i < _api.length; i++) {
|
||||
if (apiTo) apiTo = apiTo + ":"
|
||||
apiTo = apiTo + _api[i]
|
||||
}
|
||||
|
||||
if (apiFrom && apiTo) {
|
||||
console.log("using api: " + apiFrom + " -> " + apiTo)
|
||||
var _pR = {}
|
||||
_pR["^" + apiFrom] = ""
|
||||
app.use(
|
||||
apiFrom,
|
||||
createProxyMiddleware({
|
||||
target: apiTo,
|
||||
changeOrigin: true,
|
||||
pathRewrite: _pR,
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
app.use(express.static(process.env.WEBROOT || "/data"))
|
||||
|
||||
if (ssr) {
|
||||
console.log("using ssr via: " + ssr)
|
||||
app.use(
|
||||
createProxyMiddleware({
|
||||
target: ssr,
|
||||
changeOrigin: true,
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
if (index) {
|
||||
console.log("using default index: " + index)
|
||||
app.use(historyFallback({ index: index, verbose: true, disableDotRule: true }))
|
||||
app.get(index, function (req, res) {
|
||||
res.sendFile(index, {
|
||||
root: process.env.WEBROOT || "/data",
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
app.use(function (req, res, next) {
|
||||
res.status(404).end()
|
||||
})
|
||||
|
||||
var server = app.listen(port, host)
|
||||
Reference in New Issue
Block a user