2012-04-29 13 views
26

私のnginxのサーバーは、実際には、単純なと(ポート3000でリッスン)私のノードのバックエンドをプロキシさ:nginxプロキシパスノード、SSL?

upstream_1は(ポート3000上)nginx.confで定義された私のノードクラスタである
location /api/ { 
proxy_pass http://upstream_1; 
} 

http接続でSSLを追加する必要があるので、次の質問があります.SSLを有効にするためにnginxを設定するだけですか?そしてそれは自動的にリクエストの暗号化を解除し、それを非暗号化してノードに渡します。これは正常に処理できますか?あるいは、sslもサポートするようにNodejsを設定する必要はありますか?

答えて

72

SSLを処理するためにnginxを使用している場合、ノードサーバーは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からノードへのプロキシを偽装するのは簡単ではないと思いますので? – spacenick

+0

はい、これは実際には推奨される設定です。 Nginxは、ノードサーバと同じマシン上にあるか、または内部IP経由でノードサーバと通信する必要があります。そのため、今のところそれを偽装する方法があります。 – Bill

+0

ありがとう@Bill! :) – spacenick