我购买了 DigitalOcean Droplet,想用它来托管多个网站。
所有这些网站都有 Node.js 中的服务器。我的 Droplet 的结构是每个网站的目录和每个目录中的文件 server.js
。
当我想将网站上线时,我会在正确的目录中运行node server.js
。这将创建在端口 80 上运行的服务器实例。
同时,我在 GoDaddy 购买了多个域名:site1.com、site2.com 等。
我的问题是:当域重定向到正确的服务器时,我应该如何同时运行所有 Node 实例?
最好的解决方案是,我不必创建一个文件来处理对服务器的所有传入请求(除非这是非常通用的东西,我不必每次添加新站点时都进行修改)。
我想过为每个网站使用不同的端口,但我认为不可能将域 site1.com:80 重定向到 ip_address:another_port。
最佳答案
到目前为止,更简单的方法是:
- 为每个 Nodejs 应用程序使用不同的端口
- 设置防火墙规则以关闭除 HTTP、HTTPS 等之外的端口
- 安装 NGINX 并将其设置为反向代理
这种方式还将使您能够直接使用 nginx 托管所有静态文件、处理 HTTPS、创建访问日志......以及网络服务器通常执行的所有操作!
server {
listen 80;
server_name domain1.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8001;
}
}
server {
listen 80;
server_name domain2.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8002;
}
}
关于node.js - 在单个服务器上运行多个 Node 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33986500/