Я пытаюсь настроить nginx, чтобы он proxy_pass
запрашивал приложения моего узла. Вопрос о StackOverflow получил много положительных отзывов: /programming/5009324/node-js-nginx-and-now, и я использую конфигурацию оттуда.
(но поскольку вопрос касается конфигурации сервера, он должен быть на ServerFault)
Вот конфигурация 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
Я знаю, что что-то происходит.
а) тест-экспресс НЕ работает
б) работает экспресс-экспресс
(и я могу подтвердить, что он работает через командную строку, пока 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» на «localhost» и наоборот
Пожалуйста, порекомендуйте. Я уверен, что упустил некоторые очевидные детали, и я хотел бы узнать больше. Спасибо.
источник
nginx
журнале ошибок?forever
илиpm2
запускающий его, а затемnginx
просто прокси к нему?Ответы:
Вы экспресс настроен для обслуживания пути
/index.html
, но вам требуется/test-express/index.html
. Либо настройте express для обслуживания,/test-express/index.html
либо заставьте nginx убрать/test-exress
из прокси-запроса. Последние так же просто, как добавить косые чертыlocation
иproxy_pass
.Смотрите http://nginx.org/r/proxy_pass для деталей.
источник