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

Javascript 如何在ngnix上为生产环境配置nodejs,javascript,angularjs,node.js,sockets,Javascript,Angularjs,Node.js,Sockets,我必须用angularjs和nodejs开发一个聊天系统。 要发送和接收消息,我使用socket.io。 对于nodejs,我使用localhost cmd创建nodejs服务器 这很好,但现在我必须把它付诸实践 所以我不明白如何将nodejs代码放到live上 我有一个vps服务器,节点js在那里工作 这是我的angularjs系统url 这是套接字工作的nodejs服务器链接 所以我的问题是: 如何在ngnix服务器上为生产环境使用nodejs代码 谢谢一种方法是将nginx配置为反向代

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

这很好,但现在我必须把它付诸实践

所以我不明白如何将nodejs代码放到live上

我有一个vps服务器,节点js在那里工作

这是我的angularjs系统url

这是套接字工作的nodejs服务器链接

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

一种方法是将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;
    }
}

有关更详细的说明,请参见此处的帖子:

您能提供您的目录结构吗?我认为这取决于您是否希望通过nginx或nodejs为前端提供服务

据我所知,上述示例配置仅在nodejs为前端服务的情况下有效

  • 在node.js后端应用程序中创建一个名为
    public
    的新目录,并将其放入整个前端应用程序中
  • 添加
    app.use(express.static(uu dirname+/public))之前,请在
    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;
        }
    }
    

    我已经遵循了这些教程,但我不明白这是如何工作的。我的代码angularjs和node js都在同一台服务器上。我无法理解我是如何发送消息以及NodeJ是如何获得消息的,但当我加载时,NodeJ响应并不是我的整个站点,但我必须为前端呈现所有html和angularjs代码,我只想监听套接字消息。实际上,这是聊天系统,这个应用程序。使用(express.static(u dirname+'/public');加载一个html页面我不需要这个。我通过angularjs加载html apge,在这个页面中,我创建了socket并将消息发送到app.js节点js文件。在这种情况下,我建议您在socket.twodegrees.io这样的子域上启动socket.io。因此,最后您需要2个Nginx配置。