diff --git a/.env.development b/.env.development index 2ed0189..82aa71d 100644 --- a/.env.development +++ b/.env.development @@ -1,6 +1,7 @@ NODE_TLS_REJECT_UNAUTHORIZED=0 # NODE_EXTRA_CA_CERTS=C:\\Users\\popov\\AppData\\Local\\mkcert SSL_ENABLED=true +NEXT_PUBLIC_PORT=3004 SSL_KEY=./certificates/localhost-key.pem SSL_CERT=./certificates/localhost.pem diff --git a/package.json b/package.json index 5de6799..55dc8fb 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "homepage": "https://git.d-popov.com/popov/next-cart-app", "scripts": { "debug": "nodemon --inspect server.js", - "debug-npm-env": "cross-env NODE_ENV=$NODE_ENV nodemon --inspect server.js", + "debug-npm-env": "dotenv -e .env.$NODE_ENV -- nodemon --inspect server.js", "build": "next build", "buildWin": "npm run build", "start": "next start", diff --git a/server.js b/server.js index ee38b95..2a0aa66 100644 --- a/server.js +++ b/server.js @@ -9,13 +9,7 @@ const sharp = require('sharp'); const https = require('https'); //const getPort = require("get-port"); -if (process.env.NODE_ENV === 'test') { - // Load environment variables from .env.test - require('dotenv').config({ path: '.env.test' }); -} else { - // Load default environment variables - require('dotenv').config(); -} + let getPort; import('get-port').then(module => { getPort = module.default; @@ -26,6 +20,20 @@ process.env.TZ = 'Europe/Sofia'; // Global variable to store the base URL let baseUrlGlobal; +// if (process.env.NODE_ENV === 'test') { +// // Load environment variables from .env.test +// require('dotenv').config({ path: '.env.test' }); +// } else { +// // Load default environment variables +// require('dotenv').config(); +// } + +console.log("initial process.env.NODE_ENV = ", process.env.NODE_ENV); +require('dotenv').config({ + path: `.env.${process.env.NODE_ENV}` +}); + +console.log("process.env.NODE_ENV = ", process.env.NODE_ENV); const PORT = process.env.NEXT_PUBLIC_PORT || 3000; const HOST = process.env.NEXT_PUBLIC_HOST; @@ -33,7 +41,7 @@ const dev = process.env.NODE_ENV !== "production"; const PROTOCOL = process.env.NEXT_PUBLIC_PROTOCOL; const app = next({ dev }); const handle = app.getRequestHandler(); -console.log("process.env.NODE_ENV = ", process.env.NODE_ENV); +console.log("process.env.SSL_ENABLED = ", process.env.SSL_ENABLED); console.log("process.env.NEXTAUTH_URL = ", process.env.NEXTAUTH_URL); console.log("process.env.NEXT_PUBLIC_PORT = ", process.env.NEXT_PUBLIC_PORT); @@ -63,6 +71,16 @@ app //check if ssl is enabled if (process.env.SSL_ENABLED === "true") { + console.log("SSL_ENABLED = true"); + // Redirect from http to https + server.use((req, res, next) => { + if (req.headers['x-forwarded-proto'] !== 'https') { + return res.redirect(`https://${req.headers.host}${req.url}`); + } + next(); + }); + } + if (process.env.SSL_KEY && process.env.SSL_CERT) { const options = { key: fs.readFileSync(process.env.SSL_KEY), cert: fs.readFileSync(process.env.SSL_CERT),