2012-04-29 51 views
26

我的nginx的服務器是否確實進行代理我的節點的後端(其監聽端口3000)用一個簡單的:nginx代理傳遞節點,SSL?

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

凡upstream_1是nginx.conf定義(在端口3000)我的節點羣集。

我必須在http連接上添加SSL,所以我有以下問題:我只需要配置nginx來啓用ssl?它會自動「解密」請求並將其解密傳遞給Node,通常它可以處理它?還是我需要配置Nodejs以支持ssl?

回答

72

如果您使用nginx來處理SSL,那麼您的節點服務器將只使用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

感謝您的快速回答比爾!所以我猜這沒關係?既然我猜想從nginx到node的欺騙代碼並不那麼容易? – spacenick

+0

是的,這實際上是推薦的設置。 Nginx應該與節點服務器位於同一臺機器上,或者通過內部IP與節點服務器通信,因此現在有辦法欺騙它。 – Bill

+0

謝謝@Bill! :) – spacenick