Я пытаюсь разместить веб-сайт с несколькими поддоменами (созданный с помощью 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;
}
}
Я открыл для всех портов TCP в DigitalOcean, и если я пытаюсь открыть MyDigitalOceanIPv4: 8000 в моем браузере, то мой сайт (размещенный в контейнере Docker) успешно загружается. Однако, если я пытаюсь открыть свой веб-сайт "example.com", я получаю сообщение о том, что веб-сервер Cloudflare 521 не работает.
Я также проверил, что пути и содержимое ключа Cloudflare SSL верны, nginx -t
не показывает ошибок, и я удостоверился, что перезапустил nginx после внесения изменений.
Я также пытался внести в белый список IP-адреса Cloudflare, используя мой конфигурационный файл Nginx, но он не работал.
Если я попытаюсь telnet MyDigitalOceanIPv4 443
или 80, тогда я получу telnet: Unable to connect to remote host: Connection refused
.
Внутри моего экземпляра DigitalOcean я попытался свернуть http://localhost:8000
, что успешно печатает содержимое моего сайта.
Я подозреваю, что есть какой-то параметр DigitalOcean, который мне нужно настроить, или что-то не так с моим файлом Nginx (хотя я успешно использовал ту же конфигурацию Nginx на другом облачном провайдере), но чувствую, что перепробовал все ..