Проблема с рукопожатием 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.
Сталкивались ли вы с подобной проблемой раньше? Что вы можете посоветовать? В чем может быть проблема?
Спасибо за помощь и время!