Javascript nodej在Nginx背后工作

Javascript nodej在Nginx背后工作,javascript,node.js,nginx,Javascript,Node.js,Nginx,我在同一台服务器上同时运行NodeJS和Nginx。Nginx接收来自“www.example.com”的请求,我希望NodeJS接收来自“api.example.com”的请求。我几乎成功了,我将Nginx配置为将请求从“api.example.com”转发到NodeJS(localhost:3000),当然它可以工作,但请求到达NodeJS时没有任何信息 例如,我使用PassportJS开发NodeJ背后的所有逻辑。我有这样的想法: app.post('/room/create', func

我在同一台服务器上同时运行NodeJS和Nginx。Nginx接收来自“www.example.com”的请求,我希望NodeJS接收来自“api.example.com”的请求。我几乎成功了,我将Nginx配置为将请求从“api.example.com”转发到NodeJS(localhost:3000),当然它可以工作,但请求到达NodeJS时没有任何信息

例如,我使用PassportJS开发NodeJ背后的所有逻辑。我有这样的想法:

app.post('/room/create', function(req, res) { console.log(req); } );
和“req”,当我通过“api.ismuser.com”访问时,应该存储来自请求的所有信息的var是空的。但是,如果我使用公共IP:PORT来获取NodeJS,它就可以工作

我只是猜测这是由于Nginx,它就像NodeJS的反向代理一样工作

我不知道把Nginx放在NodeJS前面是否做得很好,但这是我发现的用相同的公共IP运行www.ismuser.com和api.ismuser.com的唯一方法

我能做什么


更新

Nginx.conf:

http {
    passenger_root /home/ubuntu/.rvm/gems/ruby-2.0.0-p195@ism_r3/gems/passenger-4.0.5;
    passenger_ruby /home/ubuntu/.rvm/wrappers/ruby-2.0.0-p195@ism_r3/ruby;

    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream backend {
        server 127.0.0.1:3000;
    }

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

        location / {
                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;
                proxy_pass http://backend/;
                proxy_redirect off;
        }
    }

    server {
      listen 80;
      server_name www.example.com;
      root /home/ubuntu/ismapi/ism/public;   # <--- be sure to point to 'public'!
      passenger_enabled on;
    }
}
http{
passenger\u root/home/ubuntu/.rvm/gems/ruby-2.0.0-p195@ism_r3/gems/乘客-4.0.5;
乘客_ruby/home/ubuntu/.rvm/wrappers/ruby-2.0.0-p195@ism_r3/红宝石;
包括mime.types;
默认_类型应用程序/八位字节流;
发送文件到;
保持生命超时65;
上游后端{
服务器127.0.0.1:3000;
}
服务器{
听80;
服务器名称api.example.com;
地点/{
代理集头X-Real-IP$remote\u addr;
proxy\u set\u header X-Forwarded-For$proxy\u add\u X\u Forwarded\u For;
代理设置头主机$http\U主机;
proxy\u set\u头X-NginX-proxy true;
代理通行证http://backend/;
代理_重定向关闭;
}
}
服务器{
听80;
服务器名称www.example.com;

root/home/ubuntu/ismapi/ism/public;#您可能希望尝试设置proxy_-pass指令,而不使用尾随URI部分“/”,如下所示:

app.post('/room/create', function(req, res) { console.log(req); } );
proxy\u passhttp://backend;

如果指定URI,它将在发送到后端node.js应用程序的请求中使用。node.js将获得代理权限设置定义的
/
请求,而不是
/room/create


有关更多信息,请参阅nginx proxy_-pass文档:

put your nginx config plz…已添加,Thank.Nothing.Req一直为空。没有任何更改将尾部URI部分去掉。我在一个应用程序中的配置与您的完全相同:
location/api/{proxy_-passhttp://127.0.0.1:1234; }
和node.js代码检查req.body[]中的帖子内容。工作正常,
console.log(“body:+JSON.stringify(req.body))
在API处理函数中打印正文。目前还没有解决方案。事实上,我发现我不是唯一一个在将node放在Nginx下时遇到问题的人。例如,