2012-04-29 21 views
26

mój serwer nginx jest rzeczywiście buforowania moje backend węzła (który nasłuchuje na porcie 3000) z prostym:nginx proxy pass Node, SSL?

location /api/ { 
proxy_pass http://upstream_1; 
} 

Gdzie jest moja upstream_1 klaster węzeł zdefiniowany w nginx.conf (na porcie 3000).

Będę musiał dodać SSL przez połączenia http, więc mam następujące pytanie: czy muszę tylko skonfigurować nginx, aby włączyć ssl? I automatycznie "odkaszy" żądanie i przekaże je niezaszyfrowane do Węzła, które będzie w stanie obsłużyć go w normalny sposób? Czy muszę też skonfigurować Nodejs, aby obsługiwał ssl?

Odpowiedz

72

Jeśli używasz nginx do obsługi SSL, twój serwer węzłowy użyje tylko http.

upstream nodejs { 
      server 127.0.0.1:4545 max_fails=0; 
    } 

    server { 
     listen 443; 
     ssl on; 
     ssl_certificate newlocalhost.crt; 
     ssl_certificate_key  newlocalhost.key; 
     server_name nodejs.newlocalhost.com; 

     add_header Strict-Transport-Security max-age=500; 

     location/{ 
     proxy_pass http://nodejs; 
     proxy_redirect off; 
     proxy_set_header Host $host ; 
     proxy_set_header X-Real-IP $remote_addr ; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; 
     proxy_set_header X-Forwarded-Proto https; 
     } 
    } 
+0

Dzięki za szybką odpowiedź Bill! Więc myślę, że to w porządku? Ponieważ wydaje mi się, że nie jest łatwo sprofilować proxy z nginx do węzła? – spacenick

+0

Tak, jest to zalecana konfiguracja. Nginx powinien znajdować się na tym samym komputerze, co serwer węzła lub komunikować się z serwerem węzła za pośrednictwem wewnętrznego adresu IP, więc teraz można go podrobić. – Bill

+0

Dzięki @Bill! :) – spacenick

Powiązane problemy