2011-11-16 14 views

Odpowiedz

9

Rozmieszczam również na Heroku. Dodają kilka nagłówków, gdy używają nginx do odwrotnego proxy. Interesujący w tym przypadku byłby x-forwarded-proto.

To co zrobiłem:

app.get(/\/register$/, function(req, res){ 
    console.log(JSON.stringify(req.headers)); //to see all headers that heroku adds 
    if(req.headers['x-forwarded-proto'] && req.headers['x-forwarded-proto'] === "http") { 
    res.redirect("https://" + req.headers.host + req.url); 
    } 
    else { 
    //the rest of your logic to handle this route 
    } 
}); 
+0

Świetnie! To bardzo pomogło. +1 :) –

0

Aby uruchomić bezpieczny serwer (https), należy go utworzyć niezależnie od niezabezpieczonego serwera (http). Będą również słuchać na oddzielnych portach. Spróbuj czegoś takiego:

var express = require('express) 
    , app_insecure = express.createServer() 
    , app_secure = express.createServer({ key: 'mysecurekey' }) 

app_insecure.get('/secure-page',function(req, res){ 
    // This is an insecure page, redirect to secure 
    res.redirect('https://www.mysecuresite.com/secure-page') 
}) 

app_secure.get('/secure-page', function(req,res){ 
// Now we're on a secure page 
}) 

app_insecure.listen(80) 
app_secure.listen(443) 

OR to może być realizowane jako middleware trasy

var redirect_secure = function(req, res, next){ 
    res.redirect('https://mysite.com' + req.url) 
} 

app_insecure.get('/secure-page',redirect_secure,function(req, res){}) 

Teraz trzeba tylko włączyć odniesienie funkcję: redirect_secure() na ścieżkach, które lubisz przekierowany bezpieczna lokalizacja.

+0

SSL barana na Heroku oznaczałoby, że biegnę pojedynczy serwer, który może przybrać zarówno bezpieczny na połączeniach niepewne, prawdopodobnie bezpieczny cert zainstalowany na równoważenia obciążenia, a musiałbym jakoś zbadać, czy Otrzymuję bezpieczny ruch. Oznacza to, że mój niezabezpieczony serwer nadal może być uruchomiony przez https ssl bez konieczności jawnego tworzenia bezpiecznego serwera. – MonkeyBonkey

1

app.enable ('proxy trust');

"Korzystanie z Expressu za odwrotnym proxy, takim jak Varnish lub Nginx, jest banalne, jednak wymaga konfiguracji. Dzięki włączeniu ustawienia" proxy zaufania "za pośrednictwem app.enable (" proxy zaufania "), Express będzie wiedział, że jest siedzi za proxy i że pola nagłówka X-Forwarded- * mogą być zaufane, w przeciwnym razie mogą być łatwo sfałszowane. "

Express behind proxies doco

Powiązane problemy