nginx+;cloudflare+;数字海洋=521

nginx+;cloudflare+;数字海洋=521,nginx,digital-ocean,cloudflare,Nginx,Digital Ocean,Cloudflare,我正在尝试在DigitalOcean上托管一个包含多个子域(使用Cloudflare创建,它还提供SSL)的网站,Nginx充当反向代理 我的Cloudflare配置 DNS设置: Type ~ Name ~ Value A ~ api ~ MyDigitalOceanIPv4 A ~ example.com ~ MyDigitalOceanIPv4 A ~ www ~ MyDigitalOceanIPv4 加密设置: SSL: Full (strict) Always use HTTPS:

我正在尝试在DigitalOcean上托管一个包含多个子域(使用Cloudflare创建,它还提供SSL)的网站,Nginx充当反向代理

我的Cloudflare配置

DNS设置:

Type ~ Name ~ Value
A ~ api ~ MyDigitalOceanIPv4
A ~ example.com ~ MyDigitalOceanIPv4
A ~ www ~ MyDigitalOceanIPv4
加密设置:

SSL: Full (strict)
Always use HTTPS: On 
Automatic HTTPS Rewrites: On 
我还使用Cloudflare创建了证书(并按照他们的指示使用Nginx进行了设置)

我的Nginx配置:

server {
    listen 443;
    server_name example.com www.example.com;

    ssl on;
    ssl_certificate /srv/example.com/cloudflare.pem;
    ssl_certificate_key /srv/example.com/cloudflare.key;

    location / {
        proxy_pass http://localhost:8000;
    }
}

server {
    listen 443;
    server_name api.example.com;

    ssl on;
    ssl_certificate /srv/example.com/cloudflare.pem;
    ssl_certificate_key /srv/example.com/cloudflare.key;

    location / {
        proxy_pass http://localhost:8080;
    }
}
我已为DigitalOcean上的所有TCP端口打开,如果我尝试在浏览器中打开MyDigitalOceanIPv4:8000,则我的网站(托管在Docker容器中)将成功加载。然而,如果我尝试打开我的网站“example.com”,则会收到Cloudflare的521 web服务器关闭的消息

我还验证了Cloudflare SSL密钥路径和内容是否正确,
nginx-t
未显示任何错误,并且我已确保在进行更改后重新启动nginx

我还尝试使用我的Nginx配置文件将Cloudflare的IP列入白名单,但没有成功

如果我尝试
telnet MyDigitalOceanIPv4 443
或80,则会得到
telnet:无法连接到远程主机:连接被拒绝

在DigitalOcean实例中,我尝试了卷曲
http://localhost:8000
成功打印我的网站内容


我怀疑我需要配置一些DigitalOcean设置,或者我的Nginx文件有问题(尽管我在不同的云提供商上成功地使用了相同的Nginx配置),但感觉我已经尝试了所有方法。

你找到解决方案了吗?@saitam我通过在新的水滴上重做所有内容来解决问题,所以我不能确切地说是什么问题,但我知道任何设置都没有问题。我的建议是检查:(1)检查您在cloudflare dns上实际使用了正确的IP;(2)您没有进行端口输入错误(例如,433而不是443),(3)您的nginx配置实际正在加载(您可以通过将ssl_证书更新到不存在的路径并运行nginx-t查看是否显示任何错误来轻松测试这一点),(4)如果您使用的是ufw,则允许https通信