Проблема с рукопожатием SSL

У меня есть код, который отправляет api запрос на конечную точку api, и печатает данные. Он хорошо работает на моей локальной машине. Но когда я развертываю его на своей ec2, он застревает после отправки запроса к api конечной точке. Мой ec2 - это api backend сервис, его front end размещен в S3 как статический сайт. https : // mydomain.com переходит на S3 и связан с моим ангулярным фронтендом. https : // backend.mydomain.com связан с моим бэкендом django EC2 api. который работает отлично, нет никаких проблем с https-соединением. Единственная проблема заключается в том, что я не могу отправить api запрос внутри моего ec2 django (который я могу отправить в моем локальном django dev без проблем).

Вот соответствующий код:

import requests

tcmb_api_key = 'xxxxxxxxx'

headers = {'key':tcmb_api_key}   

url = 'https://evds2.tcmb.gov.tr/service/evds/series=TP.DK.EUR.A-TP.DK.EUR.S&startDate=19-07-2024&endDate=19-07-2024&type=json'

try:
    response = requests.get(url, headers=headers, timeout=10) 
    response.raise_for_status()  # Check for HTTP errors
    data = response.json()
    print(data)
except Exception as e:
    print('General error:', str(e))

При выполнении он задерживается на некоторое время (может ждать несколько минут, если нет ограничения по таймауту), а затем выдает ошибку:

(venv) ubuntu@ip-172-31-27-16:~/transfertakip$ python3.11 ~/transfertakip/tcmb.py 
tcmb_api_key: jdtd2LAgBH
headers: {'key': 'jdtd2LAgBH'}
url: https://evds2.tcmb.gov.tr/service/evds/series=TP.DK.EUR.A-TP.DK.EUR.S&startDate=19-07-2024&endDate=19-07-2024&type=json
Timeout error: HTTPSConnectionPool(host='evds2.tcmb.gov.tr', port=443): Read timed out. (read timeout=10)

и вот подробная ошибка:

вот мой nginx.conf:

venv) ubuntu@ip-172-31-27-16:~/transfertakip$ cat /etc/nginx/nginx.conf 
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
}

http {
    sendfile on;
    tcp_nopush on;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ssl_prefer_server_ciphers on;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    gzip on;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

вот мой transferttakip.conf:

(venv) ubuntu@ip-172-31-27-16:~/transfertakip$ cat /etc/nginx/sites-available/transfertakip.conf 
server {
    listen 80;
    server_name backend.transfertakip.com;

    # Redirect all HTTP requests to HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name backend.transfertakip.com;

    ssl_certificate /etc/letsencrypt/live/backend.transfertakip.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/backend.transfertakip.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /static/ {
        alias /home/ubuntu/transfertakip/backend/static/;
    }
}

Я установил ssl с помощью letsencrypt, используя certbot. Стоит отметить, что https-версии прекрасно работают в ec2 django.

Сталкивались ли вы с подобной проблемой раньше? Что вы можете посоветовать? В чем может быть проблема?

Спасибо за помощь и время!

Вернуться на верх