在专用主机(EC2)上托管nodejs和socketio应用程序

时间:2015-08-17 08:24:00

标签: node.js socket.io

我有一个使用nodejs和socketio构建的私人消息应用程序,它在网址http://localhost:3000

中有效

我想知道如何将它集成到像亚马逊EC2这样的专用服务器中?我可以理解它可以在http://someip:3000上运行,但我希望聊天应用程序在网站内部工作,就像facebook一样。如何将其设置为在所有网站页面上运行?

谢谢

1 个答案:

答案 0 :(得分:0)

基本上您需要一个Web服务器来代理端口80(http)中的应用程序,这是Nginx的基本配置,其中127.0.0.1:3000中运行的节点应用程序将代理到www.example的端口80 .com应该指向EC2公共IP:

upstream node {
  ip_hash;
  server 127.0.0.1:3000;
}

server {  
  server_name www.example.com;

  access_log /var/log/nginx/www.example.com-access.log main;
  error_log /var/log/nginx/www.example.com-error.log warn;

  listen 80;

  location / {
    ## Socket.io
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    ## End Socket.io
    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 Host $host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://node;
    proxy_redirect off;
    proxy_max_temp_file_size 0;
  }
}