Saya mencoba mengkonfigurasi nginx sehingga proxy_pass
meminta ke aplikasi simpul saya. Pertanyaan tentang StackOverflow mendapat banyak upvotes: /programming/5009324/node-js-nginx-and-now dan saya menggunakan konfigurasi dari sana.
(tapi karena pertanyaannya adalah tentang konfigurasi server seharusnya di ServerFault)
Berikut ini konfigurasi 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;
}
}
Menggunakan simpul biasa:
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/');
Berhasil! Periksa: http://services.stefanow.net/test-http
Menggunakan express:
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/');
Tidak berfungsi :( Lihat: http://services.stefanow.net/test-express
Saya tahu ada sesuatu yang terjadi.
a) test-express TIDAK berjalan
b) express teks sedang berjalan
(dan saya dapat mengonfirmasi sedang berjalan melalui baris perintah saat ssh di server)
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
Saya mencoba mengatur tajuk seperti yang dijelaskan di sini: http://www.nginxtips.com/how-to-setup-nginx-as-proxy-for-nodejs/ (masih tidak berfungsi)
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;
Saya juga mencoba mengganti '127.0.0.1' dengan 'localhost' dan sebaliknya
Mohon saran. Saya cukup yakin saya kehilangan beberapa detail yang jelas dan saya ingin belajar lebih banyak. Terima kasih.
sumber
nginx
salah?forever
ataupm2
yang menjalankannya, kemudiannginx
hanya proksi untuk itu?Jawaban:
Anda menyatakan dikonfigurasi untuk melayani jalur
/index.html
, tetapi Anda membutuhkan/test-express/index.html
. Mengkonfigurasi express untuk melayani/test-express/index.html
atau membuat nginx untuk/test-exress
dihapus dari permintaan proksi. Yang terakhir adalah sesederhana menambahkan garis miring kelocation
danproxy_pass
.Lihat http://nginx.org/r/proxy_pass untuk detailnya.
sumber