Node.js + Nginx
我在我的服务器上设置了Node.js和Nginx。 现在我想使用它,但是,在我开始之前有两个问题:
Node.js服务器有两个概念,哪一个更好:
一个。 为每个需要它的网站创建一个单独的HTTP服务器。 然后在程序的开始加载所有的JavaScript代码,所以代码被解释一次。
湾 创建一个处理所有Node.js请求的Node.js服务器。 这会读取请求的文件并删除它们的内容。 因此,每个请求都会解释这些文件,但服务器逻辑要简单得多。
我不清楚如何正确使用Node.js。
Nginx作为前端服务器,在这种情况下,它将请求代理到node.js服务器。 因此您需要为节点设置一个nginx配置文件。
这是我在Ubuntu盒子里完成的:
在/etc/nginx/sites-available/
创建文件yourdomain.com
:
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 /
部分添加以下行:
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 http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Worldn');
}).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”
关于启动节点服务器的最后一个注意事项是:您应该为节点守护进程使用某种监视系统。 节点上有一个令人敬畏的教程,有暴发户和monit。
您还可以使用nginx设置多个域,并转发到多个node.js进程。
例如要实现这些:
在/ etc / nginx的/启用的站点- / DOMAIN1
server {
listen 80;
listen [::]:80;
server_name domain1.com;
access_log /var/log/nginx/domain1.access.log;
location / {
proxy_pass http://127.0.0.1:4000/;
}
}
在/ etc / nginx / sites-enabled / domain2中
server {
listen 80;
listen [::]:80;
server_name domain2.com;
access_log /var/log/nginx/domain2.access.log;
location / {
proxy_pass http://127.0.0.1:5000/;
}
}
您也可以在一个服务器配置中为应用程序设置不同的网址:
在/ etc / nginx / sites-enabled / yourdomain中 :
server {
listen 80;
listen [::]:80;
server_name yourdomain.com;
location ^~ /app1/{
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://127.0.0.1:3000/;
}
location ^~ /app2/{
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://127.0.0.1:4000/;
}
}
重新启动nginx:
sudo service nginx restart
开始申请。
节点app1.js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello from app1!n');
}).listen(3000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:3000/');
节点app2.js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello from app2!n');
}).listen(4000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:4000/');
链接地址: http://www.djcxy.com/p/52493.html
上一篇: Node.js + Nginx