nginx + cloudflare + digitalocean = 521

时间:2018-09-05 18:17:55

标签: 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: 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: Unable to connect to remote host: Connection refused

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

我怀疑我需要配置一些DigitalOcean设置,或者我的Nginx文件出了点​​问题(即使我已经在其他云提供商上成功使用了相同的Nginx配置),但感觉就像我已经尝试了一切。

0 个答案:

没有答案