Рейтинг:0

Связь сокетов Unix с Apache 2.4.51 и приложением Flask с использованием Uwsgi, возвращающего «404 Not Found»

флаг io
Jai

Я использую Apache спереди в качестве веб-сервера и запускаю приложение python flask на серверная часть, и они взаимодействуют с использованием сокета Unix, как указано в ссылке ниже для модуля mod_proxy_uwsgi, и я загрузил как mod_proxy, так и mod_proxy_uwsgi, как было предложено. https://uwsgi-docs.readthedocs.io/en/latest/Apache.html

httpd/bin/apachectl-S
Конфигурация виртуального хоста:
*: 2020 host-rh7-1 (/home/user/httpd-2.4.51/conf/httpd.conf:156)
*: 2022 host-rh7-1 (/home/user/httpd-2.4.51/conf/httpd.conf:169)
*: 2021 host-rh7-1 (/home/user/httpd-2.4.51/conf/extra/httpd-ssl.conf:123)
*: 2023 host-rh7-1 (/home/user/httpd-2.4.51/conf/extra/httpd-ssl.conf:294)
Корневой сервер: "/home/user/httpd-2.4.51"
Основной DocumentRoot: "/home/user/web/html"
Основной журнал ошибок: "/home/user/httpd-2.4.51/logs/error_log"
Мьютекс по умолчанию: dir="/home/user/httpd-2.4.51/logs/" механизм = по умолчанию
Mutex proxy-balancer-shm: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Сшивание Mutex ssl: using_defaults
Прокси-сервер Mutex: using_defaults
SSL-кэш Mutex: using_defaults
PidFile: "/home/user/httpd-2.4.51/logs/httpd.pid"
Определить: DUMP_VHOSTS
Определить: DUMP_RUN_CFG
Пользователь: name="user" id=995 not_used
Группа: name="support" id=1034 not_used

-------------------------------------

httpd.conf
------------
<Виртуальный хост *:2022>
    ProxyPass/unix:/home/user/flask_app/myproject.sock|uwsgi://home/user/flask_app/
</ виртуальный хост>



uwsgi conf.ini
---------------
[увсги]
chdir = /home/user/flask_app
модуль = приложение
мастер = правда
процессы = 2
нить = 2
сокет = myproject.sock
chmod-сокет = 660
включить потоки = правда
вакуум = правда
умирать в срок = правда

Он работал нормально, пока я не запустил Apache с 2.4.48, но после обновления Apache до 2.4.51, он перестал работать, и я не вижу, чтобы HTTP-запрос достиг приложения flask, и он дает Вместо этого «404 не найдено».

Я знаю, что вокруг этого была заявка на уязвимость, в которой говорится «CVE-2021-40438 — это уязвимость подделки запросов на стороне сервера (SSRF) в HTTP-сервере Apache. версия 2.4.48 и ранее», и Apache устранил эту проблему уязвимости в 2.4.51, но я не понимаю полного эффекта исправления в моей конфигурации.

Больше информации здесь по этой ссылке https://www.fastly.com/blog/apache-redux-preventing-server-side-request-forgery-via-cve-2021-40438 и исправление похоже в этой версии https://svn.apache.org/viewvc?view=revision&revision=1892814

Есть ли альтернативный способ включить связь сокетов Unix в httpd.conf в будущем? ИЛИ ЖЕ Вместо этого я должен использовать сокет TCP?

Обратите внимание, что я знаю, что если я использую сокет TCP вместо сокета Unix следующим образом, он работает нормально

httpd.conf
-----------
<Виртуальный хост *:2022>
    ПроксиПасс /uwsgi://127.0.0.1:2024/
</ виртуальный хост>



uwsgi conf.ini
--------------
[увсги]
chdir = /home/user/flask_app
модуль = приложение
мастер = правда
процессы = 2
нить = 2
сокет = 127.0.0.1:2024
включить потоки = правда
вакуум = правда
умирать в срок = правда
Рейтинг:0
флаг io
Jai

Увидев еще несколько примеров, я просто попробовал другую версию кодирования строки ProxyPass следующим образом, и это сработало для меня:

httpd.conf
------------
<Виртуальный хост *:2022>
    ProxyPass/unix:/home/user/flask_app/myproject.sock|uwsgi://localhost/
</ виртуальный хост>

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.