Request.urlopen не работает после перемещения сервера в облако. используйте docker-compose django, nginx
Вчера я переехал в облако, при этом запустив сервер локально. На базе ubuntu 20, сервер работает с использованием docker, django, nginx, mariadb, certbot в docker-compose. Сервер настроен и функционирует. Он открыл оба 80:port и 443post для облака, и исходящие разрешены в самом облаке. В docker-compose при получении запроса с 80 или 433 из nginx.conf на upstream django_nginx server имя контейнера: 8000 после маппинга из docker-compose на 80 или 433 для приложения --bind 0.0.0.0:8000 Jango. Proxy_pass http://django_nginx; проходит. Проблема в том, что когда внешний api вызывается из запущенного django внутри контейнера docker (например, заголовок request.urlopen(url) включен или не включен), ответа нет. Поэтому я задал параметр request.url, timeout=3 и проверил, и https запрос вызывает We failed to reach a server /Reason: _ssl.c: 980: The handshake operation timed out http request causes We failed to reach a server /Reason: timed out. Я запускал сервер локально как виртуальную машину, но это была логика, которая раньше работала без проблем, поэтому я очень смущен тем, что она не работает после переноса в облако. Я спрашиваю, потому что я не добился никакого прогресса, хотя я перепробовал много вещей. Есть ли что-то, чего мне не хватает? Вся логика работает нормально, за исключением вызовов API. Если вы запросите curl из командной строки, ответ вернется нормально. plz help
форт введите здесь описание изображения
ошибка введите здесь описание изображения
mycode введите здесь описание изображения
docker-compose
version: '3'
services:
nginx:
container_name: insaengsikdang_nginx
build: ./nginx
volumes:
- static_volume:/srv/prod/_static
- media_volume:/srv/prod/_media
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
environment:
- TZ=Asia/Seoul
# - PROXY_CONNECT_TIMEOUT=460s
# - PROXY_READ_TIMEOUT=460s
ports:
- 80:80
- 443:443
depends_on:
- insaengsikdang_django
restart: always
certbot:
image: certbot/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 24h & wait $${!}; done;'"
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
environment:
- TZ=Asia/Seoul
# depends_on:
# - nginx
django:
container_name: insaengsikdang_django
build: ./mysite
image: mysite/django:4.0.3
restart: always
# command: python manage.py runserver 0.0.0.0:8000
command: gunicorn --timeout 5000 insaengsikdang.wsgi:application --bind 0.0.0.0:8000
volumes:
- ./mysite:/srv/test-server
# - ./log:/var/log/uwsgi
- static_volume:/srv/prod/_static
- media_volume:/srv/prod/_media
environment:
- TZ=Asia/Seoul
depends_on:
- db
expose:
- 8000
env_file:
- ./mysite/.env.prod
db:
container_name: insaengsikdangdb
image: mariadb:10.6.7
restart: always
expose:
- "3306"
volumes:
- /insaengsikdangdb/insaengsikdangdb_local:/var/lib/mysql/
environment:
- TZ=Asia/Seoul
env_file:
- ./mysite/.env.prod.db
volumes:
static_volume:
media_volume:
nginx.conf
upstream insaengsikdang_nginx {
server insaengsikdang_django:8000;
}
server {
listen 80;
server_name ceo.insaengsikdang.com;
location / {
return 301 https://$host$request_uri;
}
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
}
server {
listen 443 ssl;
server_name ceo.insaengsikdang.com;
client_max_body_size 3m;
location / {
proxy_pass http://insaengsikdang_nginx;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
proxy_connect_timeout 360s;
proxy_read_timeout 360s;
proxy_send_timeout 360s;
}
location /static/ {
alias /srv/prod/_static/;
}
location /media/ {
alias /srv/prod/_media/;
}
ssl_certificate /etc/letsencrypt/live/ceo.insaengsikdang.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ceo.insaengsikdang.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
изменение заголовка изменение кода nginx изменение порта django 8000>80 curl https://apis.tracker.delivery/carriers/kr.lotte/tracks/104222276804 изменение порта docker-compose изменение версии 3.0 > 3.8 django ALLOWED_HOSTS delete localhost, and 127,0,0,0,1 insaert my cloud ip