एक्सप्रेस के साथ काम करने के लिए nginx को कॉन्फ़िगर कैसे करें?


12

मैं nginx को कॉन्फ़िगर करने का प्रयास कर रहा हूं, इसलिए यह proxy_passमेरे नोड ऐप्स से अनुरोध करता है। StackOverflow पर सवाल कई अपवोट मिले: /programming/5009324/node-js-nginx-and-now और मैं वहाँ से config का उपयोग कर रहा हूँ।

(लेकिन सवाल सर्वर कॉन्फ़िगरेशन के बारे में है क्योंकि यह सर्वरफॉल्ट पर होना चाहिए)

यहाँ nginx विन्यास है:

server {
  listen 80;
  listen [::]:80;

  root /var/www/services.stefanow.net/public_html;
  index index.html index.htm;
  server_name services.stefanow.net;

  location / {
    try_files $uri $uri/ =404;
  }

  location /test-express {
    proxy_pass    http://127.0.0.1:3002;
  }    

  location /test-http {
    proxy_pass    http://127.0.0.1:3003;
  }
}

सादे नोड का उपयोग करना:

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(3003, '127.0.0.1');

console.log('Server running at http://127.0.0.1:3003/');

यह काम करता हैं! जाँच करें: http://services.stefanow.net/test-http

एक्सप्रेस का उपयोग:

var express = require('express');
var app = express(); //

app.get('/', function(req, res) {
  res.redirect('/index.html');
});

app.get('/index.html', function(req, res) {
  res.send("blah blah index.html");
});

app.listen(3002, "127.0.0.1");
console.log('Server running at http://127.0.0.1:3002/');

यह काम नहीं करता है :( देखें: http://services.stefanow.net/test-express


मुझे पता है कि कुछ चल रहा है।

a) परीक्षण-एक्सप्रेस नहीं चल रहा है यहाँ छवि विवरण दर्ज करें

b) टेक्स्ट-एक्सप्रेस चल रहा है

यहाँ छवि विवरण दर्ज करें

(और मैं पुष्टि कर सकता हूँ कि यह कमांड लाइन के माध्यम से चल रहा है, जबकि सर्वर पर ssh)

root@stefanow:~# service nginx restart
 * Restarting nginx nginx                                                                                  [ OK ]

root@stefanow:~# curl localhost:3002
Moved Temporarily. Redirecting to /index.html

root@stefanow:~# curl localhost:3002/index.html
blah blah index.html

मैंने यहाँ वर्णन के अनुसार हेडर सेट करने की कोशिश की: http://www.nginxtips.com/how-to-setup-nginx-as-proxy-for-nodejs/ (अभी भी काम नहीं करता है)

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;

मैंने 'लोकलहोस्ट' के साथ '127.0.0.1' को बदलने की कोशिश की और इसके विपरीत


कृपया सलाह दें। मुझे पूरा यकीन है कि मुझे कुछ स्पष्ट विवरण याद है और मैं और अधिक सीखना चाहूंगा। धन्यवाद।


nginxत्रुटि लॉग में कोई लॉग ?
मसलोगेह

इस सेटअप में - आप अपने एक्सप्रेस एप्लिकेशन को कैसे चला रहे हैं? क्या आपको इस तरह की एक अलग प्रक्रिया करने की आवश्यकता है foreverया pm2जो इसे चलाता है, तो nginxबस इसके लिए प्रॉक्सी करता है?
व्याकरण

मैं ठीक से याद नहीं कर सकता ... मुझे याद है कि स्वीकृत उत्तर ने मेरे लिए काम किया।
मंगल

जवाबों:


22

आप पथ की सेवा करने के लिए कॉन्फ़िगर किए गए व्यक्त करते हैं /index.html, लेकिन आपको आवश्यकता होती है /test-express/index.html। या तो एक्सप्रेस को कॉन्फ़िगर करें /test-express/index.htmlया /test-exressसमीपस्थ अनुरोध से पट्टी करने के लिए नग्नेक्स बनाएं । लैटर उतना ही सरल है जितना कि ट्रेलिंग स्लैश को जोड़ना locationऔर proxy_pass

location /test-express/ {
  proxy_pass    http://127.0.0.1:3002/;
}

देखें http://nginx.org/r/proxy_pass जानकारी के लिए।


2
प्रश्न: "मुझे पूरा यकीन है कि मुझे कुछ स्पष्ट विवरण याद है" ए: "सरल रूप में ट्रेलिंग स्लैश जोड़ें" (धन्यवाद, मैं सचमुच अटक गया था)
मार्स रॉबर्टसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.