我已经在我的服务器上设置了 Node.js 和 Nginx。现在我想使用它,但是,在我开始之前有两个问题:
一种。为每个需要它的网站创建一个单独的 HTTP 服务器。然后在程序开始时加载所有 JavaScript 代码,这样代码就会被解释一次。
湾。创建一个处理所有 Node.js 请求的 Node.js 服务器。这将读取请求的文件并评估其内容。所以文件在每个请求上都会被解释,但服务器逻辑要简单得多。
我不清楚如何正确使用 Node.js。
Nginx 用作前端服务器,在这种情况下,它将请求代理到 node.js 服务器。因此,您需要为 node.js 设置一个 nginx 配置文件。
这就是我在我的 Ubuntu 盒子里所做的:
yourdomain.com在以下位置创建文件/etc/nginx/sites-available/:
yourdomain.com
/etc/nginx/sites-available/
vim /etc/nginx/sites-available/yourdomain.com
在其中你应该有类似的东西:
# the IP(s) on which your node server is running. I chose port 3000. upstream app_yourdomain { server 127.0.0.1:3000; keepalive 8; } # the nginx server instance server { listen 80; listen [::]:80; server_name yourdomain.com www.yourdomain.com; access_log /var/log/nginx/yourdomain.com.log; # pass the request to the node.js server with the correct headers # and much more can be added, see nginx config options 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://app_yourdomain/; proxy_redirect off; } }
如果您希望 nginx (>= 1.3.13) 也处理 websocket 请求,请在该部分中添加以下行location /:
location /
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
完成此设置后,您必须启用上面配置文件中定义的站点:
cd /etc/nginx/sites-enabled/ ln -s /etc/nginx/sites-available/yourdomain.com yourdomain.com
创建您的节点服务器应用程序/var/www/yourdomain/app.js并运行它localhost:3000
/var/www/yourdomain/app.js
localhost:3000
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(3000, "127.0.0.1"); console.log('Server running at http://127.0.0.1:3000/');
测试语法错误:
nginx -t
重启nginx:
sudo /etc/init.d/nginx restart
最后启动节点服务器:
cd /var/www/yourdomain/ && node app.js
现在您应该在 yourdomain.com 上看到“Hello World”
关于启动节点服务器的最后一点注意事项:您应该为节点守护进程使用某种监控系统。在 node 上有一个很棒的教程,带有 upstart 和 monit。