Omdirigera HTTP till HTTPS i Node.js med hjälp av Express

Författare:Esadax
Uppdaterad:29 maj 2025

För att säkerställa att all HTTP-trafik omdirigeras till HTTPS, kan vi använda Express.js middleware tillsammans med både http och https moduler. Denna inställning omdirigerar automatiskt alla inkommande HTTP-förfrågningar till HTTPS samtidigt som HTTPS-förfrågningar tillåts passera som vanligt.

Så här kan du implementera det steg för steg:

  1. Konfigurera Express-appen: Skapa en instans av Express.js för att hantera din serverlogik.

  2. Definiera mellanprogram för omdirigering av HTTP till HTTPS: Använd Express-mellanprogram för att kontrollera varje inkommande begärans protokoll. Om det är HTTP, omdirigera den till HTTPS.

  3. Definiera dina vägar: Ange vilka webbadresser som ska svara med ett meddelande eller hantera andra typer av trafik.

  4. Skapa en HTTP-server: Använd modulen http för att skapa en server som lyssnar på port 3000 och delegerar förfrågningar till din Express-app.

  5. Skapa en HTTPS-server: Använd modulen https för att skapa en annan server som lyssnar på samma port (eller en annan om det behövs) och även delegerar förfrågningar till Express-appen.

  6. Starta båda servrarna: Starta båda servrarna så att de kan hantera inkommande anslutningar.

Här är den kompletta koden:

const express = require('express');
const https = require('https');
const http = require('http');

const app = express();

// Redirect HTTP to HTTPS
app.use((req, res, next) => {
    if (req.protocol === 'http') {
        return res.redirect(`https://${req.hostname}${req.path}`);
    }
    next();
});

// Define routes for HTTPS traffic
app.get('/', (req, res) => {
    res.send('HTTPS is working!');
});

// Create HTTP server
const httpServer = http.createServer((req, res) => {
    app(req, res, next => {
        // Middleware has already been applied here
        // No need to call next() again as middleware handles it
    });
}).listen(3000);

// Create HTTPS server
const httpsServer = https.createServer({ server: app }).listen(3000);

// Start both servers
httpServer.listen(3000);
httpsServer.listen(3000);

Förklaring av koden:

  • Express App Setup: Vi skapar en Express-app med hjälp av express() och definierar dess mellanprogramvara och rutter inom denna instans.

  • Middleware for Redirecting: Middleware-funktionen kontrollerar om förfrågans protokoll är HTTP. Om så är fallet omdirigeras klienten till samma sökväg men över HTTPS.

  • Ruttdefinition: Vi definierar en GET-rutt för rot-URL:en (/) som svarar med "HTTPS is working!" när den nås via HTTPS.

  • Skapande av HTTP-server: Med hjälp av http.createServer() skapar vi en HTTP-server som lyssnar på port 3000. Den här servern delegerar varje begäran till Express-appen, så att mellanprogrammet och rutterna kan bearbeta den.

  • HTTPS Server Creation: På samma sätt skapar https.createServer() en HTTPS-server konfigurerad med ett certifikat (förutsatt att en redan är inställd). Den lyssnar också på port 3000 och delegerar förfrågningar till Express-appen.

  • Starta servrar: Båda servrarna startas med hjälp av listen(), vilket säkerställer att de kan hantera inkommande anslutningar och bearbeta förfrågningar korrekt.