在nginx位置设置node.js

时间:2016-10-15 22:03:44

标签: javascript node.js nginx

我是初学者,如果犯了大错,我很抱歉。让我们开始吧,我有以下问题:我已经设置了运行Ubuntu 16.04的VPS,安装了nginx和node.js。我想要做的是在我加载http://x.x.x.x/然后在http://x.x.x.x/node中运行节点服务器时拥有一个静态网页。我尝试过这样做,设置 / etc / nginx / sites-available / default 这样的文件。

upstream app_x {
    server 127.0.0.1:3000;
}

# nginx server instance
server {
    listen 80;
    server_name _;

    location / {
        root /var/www/general;
        index index.html index.htm index.php;
        try_files $uri $uri/ @node;
    }

    location @node {
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://app_x;
    }
}

我能够运行服务器,在我的主目录中设置一个带有 index.html index.js node_modules package.json 的文件夹。但是,当我尝试建立连接时,它并不起作用。我还安装了所有依赖项,即:socket.io ...

这里是index.js:

var app = require('http').createServer(handler)
var io = require('socket.io')(app);
var fs = require('fs');

app.listen(3000);

function handler (req, res) {
  fs.readFile(__dirname + '/index.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200);
    res.end(data);
  });
}

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

的index.html:

<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost:3000');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>

如何解决它以及如何成为文件夹的最佳配置,我应该在哪里保存index.html作为初始静态网页? (如果我把它保存在var / www /&#34; xxxxxx&#34;它可以吗?)

0 个答案:

没有答案