介绍
在本教程中,我们将设置一个 Node.js 开发环境,允许您快速将新团队成员纳入 Node.js 应用程序的开发过程。
这个方法是基于 Node.js 通过 Unix 接口而不是端口与 Nginx 交互,假设您在login.dev.nodeapp.com 拥有应用程序的开发版本,此外,我们还会将每个开发者的接口保存在 /tmp
目录中,例如 `/tmp/login.dev.nodeapp.com.sock。
要求
您将需要安装 Nginx 和 Node.js. 此外,我们将假设您已经拥有与您的 VPS 相关的域名(例如 nodeapp.com
)。 ** 注意**:您还应该为您的域名设置 wildcard CNAME 记录。
设置 Nginx
我们应该创建一个新的 Nginx 配置文件 /etc/nginx/sites-available/dev.nodeapp.com
其中包含:
1server {
2
3 listen 80;
4
5 server_name ~^(?<login>[a-z]+)\.dev\.nodeapp\.com$;
6
7 location / {
8
9 proxy_pass http://unix:/tmp/$login.dev.nodeapp.com.sock:$uri$is_args$args;
10
11 proxy_set_header Host $host;
12 proxy_set_header X-Real-IP $remote_addr;
13 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
14 }
15}
将此配置链接到Sites-enabled
文件夹并重新启动 Nginx:
1ln -nfs /etc/nginx/sites-available/dev.nodeapp.com /etc/nginx/sites-enabled/dev.nodeapp.com
2/etc/init.d/nginx restart
现在 Nginx 已经准备好接受用户的请求,并将其引导到开发人员的应用程序副本,具体取决于 URL。
1http://ivan.dev.nodeapp.com -> /tmp/ivan.dev.nodeapp.com.sock
2http://anna.dev.nodeapp.com -> /tmp/anna.dev.nodeapp.com.sock
修改 Node.js 应用程序
我们将使用从 Node.js的最小Web服务器示例,但相同的修改可能适用于任何Node.js服务器(如快递)。
问题是,我们需要将默认的端口倾听行为更改为接口倾听:
1var fs = require('fs');
2var http = require('http');
3
4var mask = process.umask(0);
5var socket = '/tmp/' + process.env.USER + '.dev.nodeapp.com.sock';
6
7if (fs.existsSync(socket)) {
8 fs.unlinkSync(socket);
9}
10
11http.createServer(function (req, res) {
12 res.writeHead(200, {'Content-Type': 'text/plain'});
13 res.end('Hello World\n');
14}).listen(socket, function() {
15 if (mask) {
16 process.umask(mask);
17 mask = null;
18 }
19});
20
21console.log('Server running at ' + socket);
现在你可以运行你的应用程序 node app.js
并访问它在 http://yourlogin.dev.nodeapp.com
。
** 注意:** 当 Node.js 开始收听接口时,它会创建一个指定的文件,但如果接口文件已经存在,Node.js 将无法开始收听,所以我们应该确保我们从之前的运行中删除接口。
另一件事是,我们应该为所有人创建一个完全可访问的插槽,这样 Nginx 就可以使用它。
祝贺!你现在所需要的一切,就是在你的VPS上介绍一个新的开发者。