2011-05-19 9 views
5

VPS'de çalışan bir kişisel alanım var. Nginx'i node.js uygulamasına ters bir proxy olarak kurmak istiyorum, ancak çalışmıyor. Herkes benim yapılandırmamı görebilir ve ne yaptığımı bana söyleyebilir mi? ninnx için bu yapılandırmada node.js için ters proxy olarak ne var?

benim example.com alan adı olduğunu varsayalım. Temel olarak, node.example.com adresine gittiğimde, node.js uygulamasına proxy uygulayacakları şekilde yapmak isterim. Ayrıca nginx'te blog.example.com ve www.example.com kurulumu var.

İşte (blog.example.com, www.example.com kurulum atlanırsa) ters proxy için benim nginx yapılandırma aşağıdaki gibidir:

 
server { 
    listen 80; 
    server_name node.example.com; 

    access_log /srv/www/example.com/logs/node-access.log; 
    error_log /srv/www/example.com/logs/node-error.log; 

    location/{ 
     proxy_pass    http://example.com:3000/; 
     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; 
     client_max_body_size 10m; 
     client_body_buffer_size 128k; 
     proxy_connect_timeout 90; 
     proxy_send_timeout  90; 
     proxy_read_timeout  90; 
     proxy_buffers   32 4k; 
    } 
} 

Ve işte benim node.js uygulamadır:

 
var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(3000, "example.com"); 

nginx sunucusunu yeniden başlattım ve node.js uygulamasını çalıştırdım. Ancak node.example.com adresine gidersem, "node.ornek.com mevcut değil veya mevcut değil" diyor.

benim yapılandırma ile neyin yanlış olduğundan emin değilim. Bende çeşitli kombinasyonları denedim.

Bunlar ben denedim yapılandırmalarıdır:

 
proxy_pass in nginx   | hostname in node.js app 
http:// localhost:3000/  | ---.listen(3000, "localhost") 
http:// 127.0.0.1:3000/  | ---.listen(3000, "127.0.0.1") 
http:// node.example.com:3000/ | ---.listen(3000, "node.example.com") 

şunlarla nginx yapılandırma çalıştı:

 
upstream nodeapp { 
    server 127.0.0.1:3000; 
} 

server { 
    ... 
    location/{ 
    proxy_pass  http:// nodeapp; 
    ... 
    } 
    ... 
} 

Ve o da çalışmıyor. Neyi yanlış yapıyorum? İnternette birkaç saat aradım ve çeşitli yaklaşımlar denedim ama hepsi işe yaramıyor. Birisi bana yardımcı olabilir eğer

Gerçekten memnun olurum.

Teşekkürler! (Http: //) ve (sizin hostname): nginx yapılandırma (proxy_pass) Eğer arasındaki URL'de boşlukları kaldırmak zorunda içinde

+1

O hata mesajı daha bir nginx/düğüm sorunu daha dns konusu gibi gözüküyor. Node.example.com yerine ip adresini kullanırsanız işe yarar mı? – kolbyjack

+0

IP adresini kullanmayı denedim, ancak bu da işe yaramadı. –

+0

@kolbyjack, aslında haklıydınız. DNS'i yanlış yapılandırdım. Şimdi çalışıyor =) Teşekkürler! –

cevap

2

yazdığın:

proxy_pass http:// nodeapp;

sen yazmak zorunda :

proxy_pass http://nodeapp ;

benim sunucuda denemek ve http sonra boşluk ekleyin: // .. sonra nginx yeniden ama Nginx faild! Yani, bence bu belki de senin nginx problemin! Bu alanı kaldırmaya çalışıyorum ve umarım sizinle çalışmayı umuyoruz!

İyi şanslar!

+0

http: // nodeapp'a yer açmamın nedeni; Çünkü Stackoverflow, soru gönderimimde çok fazla bağlantımın (muhtemelen spam) olduğunu şikayet etti. Benim gerçek konfigürasyonda, http: // nodeapp; http: // nodeapp yerine. –

+0

Sabit alan (dirildi). –