Express ile çalışacak şekilde nginx nasıl yapılandırılır?


12

proxy_passDüğüm uygulamaları için istekleri böylece nginx yapılandırmaya çalışıyorum . StackOverflow ile ilgili pek çok oy var: /programming/5009324/node-js-nginx-and-now ve oradan config kullanıyorum.

(ancak soru sunucu yapılandırmasıyla ilgili olduğu için ServerFault'ta olması gerekir)

İşte nginx yapılandırması:

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;
  }
}

Düz düğümü kullanma:

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/');

İşe yarıyor! Kontrol edin: http://services.stefanow.net/test-http

Ekspres kullanarak:

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/');

Çalışmıyor :( Bkz: http://services.stefanow.net/test-express


Bir şeylerin olduğunu biliyorum.

a) test-express çalışmıyor resim açıklamasını buraya girin

b) metin-ifade çalışıyor

resim açıklamasını buraya girin

(ve sunucuda ssh iken komut satırı üzerinden çalıştığını doğrulayabilirim)

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

Üstbilgileri burada açıklandığı gibi ayarlamayı denedim: http://www.nginxtips.com/how-to-setup-nginx-as-proxy-for-nodejs/ (hala çalışmıyor)

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;

Ayrıca '127.0.0.1'i' localhost 'ile değiştirmeyi denedim ya da tam tersi


Tavsiye lütfen. Kesin bazı ayrıntıları kaçırdığımdan eminim ve daha fazla bilgi edinmek istiyorum. Teşekkür ederim.


Herhangi bir giriş nginxhata günlüğü var mı?
masegaloeh

Bu kurulumda - ekspres uygulamanızı nasıl çalıştırıyorsunuz? Bunun gibi foreverya pm2da çalıştıran ayrı bir sürecin nginxolması gerekiyor mu , o zaman sadece vekiller?
gramer

Tam olarak hatırlayamıyorum ... Kabul edilen cevabın benim için işe yaradığını hatırlıyorum.
Mars Robertson

Yanıtlar:


22

Sunum yolu için yapılandırılmış ifade /index.html, ancak gerekir /test-express/index.html. Express'i proxy /test-express/index.htmlhizmetinden şerit ya da nginx yapmak üzere yapılandırın /test-exress. İkincisi locationve sonlarına eğik çizgi eklemek kadar basittir proxy_pass.

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

Ayrıntılar için http://nginx.org/r/proxy_pass adresine bakın.


2
S: "Kesin bazı ayrıntıları kaçırdığımdan eminim" A: "sondaki eğik çizgi eklemek kadar basit" (teşekkür ederim, kelimenin tam anlamıyla sıkışmıştım)
Mars Robertson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.