使用数字海洋,我创造了一个负载平衡器,是连接到两个水滴。两个液滴都安装了NGINX,当我在浏览器上测试负载均衡器ip地址时,它正确地在液滴1和2之间切换。
现在的问题是,我希望将负载均衡器指向我在CloudFlare上创建的子域。让我们说我的域名是example.com。我想创建一个名为api.example.com的子域(它是Cloudflare上的一个记录)。这应该很简单。我在Cloudflare上创建了A记录,并将其链接到数字海洋负载均衡器ip地址。
当我试图查看api.example.com是否在浏览器上工作时,我会在连接超时时得到一个522错误。
由于我的名字服务器是在Cloudflare上管理的,而我的液滴(虚拟机)在数字海洋上,我是否需要设置从http到https的端口转发?我在这里没什么经验。
有人会遇到这种情况,并且知道让子域工作的步骤吗?
我是否需要在每个液滴中创建带有服务器块的配置nginx站点文件,并使用Lets和Certbot?
如果是的话,负载均衡器ip地址在哪里合适。因为我在每个单独的水滴上都这样做,所以我很难考虑如何为负载平衡器合并配置,因为从技术上讲,它不是我可以登录和安装NGINX的vm (据我所知)。
任何帮助都将不胜感激。
发布于 2022-06-23 21:48:09
我发现有效的解决方案是在数字海洋中的负载均衡器设置。为端口443设置一个新的端口转发规则,并将SSL设置为通过。一旦完成,您将需要进入/etc/nginx/sites可用,或者更新默认值,或者创建一个新的.conf文件,在其中定义一个新的服务器块。在下面的示例中,我在/var/www文件夹中创建了一个定制的html目录和页面。
server {
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
一旦完成,您需要在启用站点的文件夹之间创建一个链接。关于如何创建这类文件的详细信息,我使用它作为指南(它有点过时,但仍然有效)。
在数字海洋服务器上创建和部署Express Rest API
一旦创建了conf文件并设置了服务器块,您就可以按照此链接进行SSL传递。
从本质上说,要使其正常工作,您可以使用Certbot创建SSL证书,这样Https才能工作。您可以在每个虚拟机上这样做,也可以在数字海洋上创建一个液滴图像。因此,我的建议是在一个小滴上完成所有配置,并使https正确工作(这意味着您可以转到站点地址,而不是ip,它可以工作)。另一种方法是将所有步骤记录在VM上,并使用像Ansible这样的devOps工具来实现自动化,这样您就不必手动定制每台机器。
两个站点运行后(在切换子域指向负载均衡器之前,可以针对要测试的每个液滴测试子域),然后可以将负载均衡器ip地址设置为您域或子域的cloudflare A记录。
根据我的理解,SSL通过让负载均衡器通过任何SSL证书检查到与负载均衡器相关的每个单独的水滴。因此,请记住,如果您正在为每个液滴管理一个或多个证书,如果任何证书过期,则该液滴将无法工作。希望这能帮上忙。
https://stackoverflow.com/questions/72660910
复制相似问题