我正在尝试托管一个网站,该网站包含多个子域(使用Cloudflare创建,也提供SSL),托管在DigitalOcean上,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网络服务器已关闭消息 .
我还验证了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文件有问题(尽管我已经在不同的 Cloud 提供商上成功使用了相同的Nginx配置),但感觉我已经尝试了一切......