我有一次在同一臺服務器上運行的NodeJS和Nginx。 Nginx接受來自「www.example.com」的請求,並且我希望NodeJS從「api.example.com」接收請求。我幾乎得到它,我配置Nginx將來自「api.example.com」的請求轉發到NodeJS(localhost:3000),當然它工作正常,除了請求到達NodeJS沒有任何信息。NodeJS在Nginx後面工作
例如,我使用PassportJS開發NodeJS背後的所有邏輯。我有這樣的事情:
app.post('/room/create', function(req, res) { console.log(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/[email protected]_r3/gems/passenger-4.0.5;
passenger_ruby /home/ubuntu/.rvm/wrappers/[email protected]_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;
}
}
把你的nginx配置PLZ ... – jmingov
已加入,謝謝。 –