簡體   English   中英

NodeJS在Nginx后面工作

[英]NodeJS working behind Nginx

我在同一台服務器上同時運行NodeJS和Nginx。 Nginx接受來自“ www.example.com”的請求,我希望NodeJS接受來自“ api.example.com”的請求。 我幾乎了解了這一點,我將Nginx配置為將請求從“ api.example.com”轉發到NodeJS(localhost:3000),並且肯定可以正常工作,只是請求沒有任何信息到達NodeJS。

例如,我正在使用PassportJS來開發NodeJS背后的所有邏輯。 我有這樣的事情:

app.post('/room/create', function(req, res) { console.log(req); } );

和“ req”,當我通過“ api.ismuser.com”訪問時,應該存儲請求中所有信息的變量為空。 但是,如果我使用公共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;
    }
}

您可能想要嘗試設置沒有尾隨URI部分“ /”的proxy_pass指令,如下所示:

proxy_pass http://backend;

如果您指定URI,它將在發送到后端node.js應用程序的請求中使用。 代替對/room/create的請求,node.js將獲得對/的請求,該請求由您的proxy_pass設置定義。

有關更多信息,請參見nginx proxy_pass文檔: http ://wiki.nginx.org/HttpProxyModule#proxy_pass

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM