我创建了两个新项目并将其部署在同一个液滴中的数字海洋中。第一个是 django,第二个是 Node js 项目。
该域实际上托管在 aws 中,因此第一个已经可以工作了
sample.maindomain.com (django)
maindomain.com (nodejs) //currently trying to figure out how route this domain toi nodejs project
假设数字海洋的IP地址是167.162.169.224
所以Route 53是这样配置的
Recordname Type Routing Value/Route traffic to
sample.maindomain.com A Simple 167.162.169.224
maindomain.com A Simple what should be the value ?
我在 nginx 中创建了两个单独的文件,因为反向代理看起来像这样
//sample.maindomain.com(django)
server {
Server_name sample.maindomain.com www.sample.maindomain.com
location /
................
// maindomain.com(nodejs)
server {
server_name maindomain.com www.maindomain.com
root /home/projectdir/nodejsproject;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
....................
.......................
所以问题是,我如何路由
maindomain.com
,使其指向 Digital Ocean 中托管的 Nodejs 项目 nginx 配置?
实际上,如果项目部署在Ec2实例中,通过将域或子域指向CNAME来添加子域会更容易,如
ec2-19-192-107-202.eu-central-1.com
您必须对两个主机名使用相同的公共 IP,并让您的 Droplet 根据 Web 请求的
Host
字段将请求发送到正确的后端。
什么叫做
Virtual Hosting
。
有很多如何使用 nginx 执行此操作的示例,这只是一个随机示例:https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks- ubuntu-16-04 上的虚拟主机
我尝试删除并重新创建虚拟主机并重新启动服务器几次,但它不起作用。nginx 配置是正确的,并且指向确切的项目位置,但仍然指向其他工作项目。
经过多次谷歌搜索,我意识到我需要将 ssl 证书添加到项目中并使用 certbot 安装它https://www.nginx.com/blog/using-free-ssltls-certificates-from-lets-encrypt-with -nginx/
我不确定为什么添加 ssl 证书后可以解决我的问题