我已将nginx设置为node.js app的前端。
我的nginx conf是:
worker_processes 1;
error_log /tmp/logs/error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
access_log /tmp/logs/access.log;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/sites-enabled/*;
# BELOW IS THE PART TO PROXY MY NODE.JS APP
upstream node_entry {
server unix:/tmp/express.sock
fail_timeout=0;
}
server {
listen 8888;
client_max_body_size 4G;
server_name localhost;
keepalive_timeout 5;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://node_entry;
}
}
}
我的node.js应用是:
express = require('express');
app = express.createServer();
app.get('/test', function(req, res){
res.send('TEST');
});
app.listen('/tmp/express.sock');
当我发出:
curl -XGET'http:// localhost:8888 / test'
我收到错误而不是代理到我的node.js app。
有什么想法吗?
答案 0 :(得分:1)
我正在做类似的事情,但它全部在一个主机上,而且我使用的是nginx和节点都知道的预定义端口号(尽管如果你能让它工作,我宁愿用你的方式)。 / p>
如果节点侦听特定端口,并且proxy_pass为http://127.0.0.1:{that_port}
,它是否有效? (假设两者都在同一台服务器上......)