Ubuntu + Apache (mod_wsgi) + Django - HTTPSConnectionPool Ошибка нового подключения - [Ошибка № 111] Отказано в подключении
Окружающая среда:
Ubuntu 24.04, Apache 2.4 (+ libapache2-mod-wsgi-py3 5.0.0-1build2), Python 3.12 (+ запросы 2.32.3), Django Admin 5.1.6
Ошибка:
Я подключил проект Django через Apache (mod-wsgi), и он работает нормально (по адресу 'https mysub.mydom.com/myapp'), за исключением requests.post
в кодах python, которые не работают с:
HTTPSConnectionPool(host='mysub.mydom.com', port=443): Max retries exceeded with url: /myapp/api/v1/endpoint (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7191eb589e50>: Failed to establish a new connection: [Errno 111] Connection refused'))
"https mysub.mydom.com/myapp/api/v1/endpoint" работает (200) из браузера. "Apache Full" разрешен из ufw
.
mysub.mydom.com.conf (для сайтов Apache-включен вместе с mysub.mydom.com-le-ssl.conf, сгенерированным certbot):
Define wsgi_daemon "mydjango_proc"
<VirtualHost *:80>
ServerName mysub.mydom.com
ServerAdmin webmaster@mydom.com
DocumentRoot /home/myuser/my_django/my_project
<IfModule mpm_itk_module>
AssignUserId myuser www-data
</IfModule>
ErrorLog /home/myuser/my_django/log/my_project.error.log
CustomLog /home/myuser/my_django/log/my_project.access.log common
Alias /static /home/myuser/my_django/my_project/static
<Directory /home/myuser/my_django/my_project/static>
Require all granted
</Directory>
<Directory /home/myuser/my_django/my_project/my_project>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
<Directory /home/myuser/my_django/my_project>
Require all granted
</Directory>
<IfDefine !wsgi_init>
WSGIApplicationGroup %{GLOBAL}
WSGIProcessGroup %{GLOBAL}
WSGIDaemonProcess ${wsgi_daemon} python-home=/home/myuser/my_django/sklp_env python-path=/home/myuser/my_django/my_project user=myuser socket-user=myuser
WSGIProcessGroup ${wsgi_daemon}
WSGIScriptAlias / /home/myuser/my_django/my_project/my_project/wsgi.py
Define wsgi_init 1
</IfDefine>
</VirtualHost>
Расположение + структура Django:
home
|-- myuser
|-- my_django (group: www-data)
|-- sklp_env
`-- my_project (group: www-data)
|-- myapp
|-- my_project
|-- static
|-- db.sqlite3 (group: www-data / permission: 664)
`-- manage.py
Некоторые настройки проекта (/home/myuser/my_django/my_project/my_project/settings.py):
...
ALLOWED_HOSTS = ['xxx.xxx.xxx.xxx','mysub.mydom.com']
SECURE_HSTS_SECONDS = 60
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
...
Мне просто интересно, в чем может быть проблема, когда URL-адреса (без кодов, содержащих requests
) нормально работают в браузере с https, но URL-адреса с requests
сталкиваются с отказом.
Спасибо, что дочитали до этого места. И еще много чего за то, что подумали об этом.