如何在ngnix上为生产环境配置nodejs

时间:2017-02-16 10:14:07

标签: javascript angularjs node.js sockets

我必须使用angularjs和nodejs开发聊天系统。 要发送和接收消息,请使用socket.io。 对于节点j,我使用localhost cmd创建nodejs服务器。

这工作正常,但现在我必须把它付诸实践。

所以我不明白如何将nodejs代码置于实时

我有节点js工作的vps服务器

这是我的angularjs系统网址

  

https://app.twodegrees.io/#/

这是socket正在运行的nodejs服务器链接

  

https://app.twodegrees.io:8080/socket.io/socket.io.js

所以我的问题是: 我如何在ngnix服务器上使用nodejs代码进行生产环境 感谢

2 个答案:

答案 0 :(得分:0)

这样做的一种方法是将nginx配置为反向代理。这会将到达您服务器的请求重定向到该服务器上运行的nodeJs应用程序。

以下是您可以添加到/etc/nginx/sites-available/default文件的示例块,此块会将请求从app.twodegrees.io重定向到本地计算机上的端口3000。

server {
    listen 80;

    server_name app.twodegrees.io;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

如需更详细的说明,请点击此处的帖子:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-14-04

答案 1 :(得分:0)

你能提供你的目录结构吗?我认为这取决于你是否想通过nginx或nodejs来提供你的前端......

据我所知,上面的示例配置仅适用于您的情况,如果nodejs正在为前端提供服务。

  1. 在名为public的node.js后端应用程序中创建一个新目录并放入整个前端应用程序
  2. 在您app.use(express.static(__dirname + '/public')); 中致电listen之前,
  3. 添加server.js

    更新:

    角度前端的配置

    server {
        listen 80;
        server_name app.twodegrees.io;
        root /usr/share/html;
        index index.html;
    
        location / {
            try_files $uri $uri/ /index.html;
        }
    }
    

    Socket.io后端的配置

    server {
        listen 80;
    
        server_name socket.twodegrees.io;
    
        location / {
            proxy_pass http://localhost:3000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }