2012-04-29 13 views
26

मेरी nginx सर्वर वास्तव में एक सरल के साथ मेरी नोड बैकएंड (जो बंदरगाह 3000 पर सुनता है) को प्रॉक्सी है:nginx प्रॉक्सी पास नोड, एसएसएल?

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

upstream_1 मेरे नोड क्लस्टर (पोर्ट 3000 पर) nginx.conf में परिभाषित किया गया है।

मुझे http कनेक्शन पर एसएसएल जोड़ना होगा, इसलिए मेरे पास निम्न प्रश्न है: क्या मुझे केवल एसएसएल सक्षम करने के लिए nginx को कॉन्फ़िगर करने की आवश्यकता है? और यह स्वचालित रूप से अनुरोध को "अनजिप" कर देगा और इसे नोड को अनसुलझा कर देगा जो इसे सामान्य रूप से संभालने में सक्षम होगा? या मुझे एसएसएल का समर्थन करने के लिए नोडज को कॉन्फ़िगर करने की आवश्यकता है?

उत्तर

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 से node तक proxying को धोखा देना इतना आसान नहीं है? – spacenick

+0

हां, यह वास्तव में अनुशंसित सेटअप है। Nginx एक ही मशीन पर नोड सर्वर के रूप में होना चाहिए या एक आंतरिक आईपी के माध्यम से नोड सर्वर से संवाद करना चाहिए, इसलिए अब इसे धोखा देने का तरीका होगा। – Bill

+0

धन्यवाद @ बिल! :) – spacenick

संबंधित मुद्दे