-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
32 lines (27 loc) · 1.35 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
const express = require('express');
const path = require('path');
const app = express();
const configs = {
caminho: 'build', //Aqui será definido a pasta de saída onde contém o index.html e os outros arquivos.
forcarHTTPS: false, //Defina para true se desejar que o redirecionamento para HTTPS seja forçado (é necessário certificado SSL ativo)
port: process.env.PORT || 3000,
};
if (configs.forcarHTTPS)
//Se o redirecionamento HTTP estiver habilitado, registra o middleware abaixo
app.use((req, res, next) => {
//Cria um middleware onde todas as requests passam por ele
if ((req.headers['x-forwarded-proto'] || '').endsWith('http'))
//Checa se o protocolo informado nos headers é HTTP
res.redirect(`https://${req.headers.host}${req.url}`);
//Redireciona pra HTTPS
//Se a requisição já é HTTPS
else next(); //Não precisa redirecionar, passa para os próximos middlewares que servirão com o conteúdo desejado
});
app.use(express.static(configs.caminho)); //Serve os outros arquivos, como CSSs, Javascripts, Imagens etc.
app.get('*', (req, res) => {
// O wildcard '*' serve para servir o mesmo index.html independente do caminho especificado pelo navegador.
res.sendFile(path.join(__dirname, configs.caminho, 'index.html'));
});
app.listen(configs.port, () => {
console.log(`Escutando na ${configs.port}!`);
});