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
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
IP adresini kullanmayı denedim, ancak bu da işe yaramadı. –
@kolbyjack, aslında haklıydınız. DNS'i yanlış yapılandırdım. Şimdi çalışıyor =) Teşekkürler! –