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

Я использую 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
VirtualHost configuration:
*: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)
ServerRoot: "/home/user/httpd-2.4.51"
Main DocumentRoot: "/home/user/web/html"
Main ErrorLog: "/home/user/httpd-2.4.51/logs/error_log"
Mutex default: dir="/home/user/httpd-2.4.51/logs/" mechanism=default
Mutex proxy-balancer-shm: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex ssl-cache: using_defaults
PidFile: "/home/user/httpd-2.4.51/logs/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="user" id=995 not_used
Group: name="support" id=1034 not_used

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

httpd.conf
------------
<VirtualHost *:2022>
    ProxyPass / unix:/home/user/flask_app/myproject.sock|uwsgi://home/user/flask_app/
</VirtualHost>



uwsgi conf.ini
---------------
[uwsgi]
chdir = /home/user/flask_app
module = app
master = true
processes = 2
thread = 2
socket = myproject.sock
chmod-socket = 660
enable-threads = true
vacuum = true
die-on-term = true

Он работал нормально, пока я не запустил 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
-----------
<VirtualHost *:2022>
    ProxyPass / uwsgi://127.0.0.1:2024/
</VirtualHost>



uwsgi conf.ini
--------------
[uwsgi]
chdir = /home/user/flask_app
module = app
master = true
processes = 2
thread = 2
socket = 127.0.0.1:2024
enable-threads = true
vacuum = true
die-on-term = true
0
задан 18 November 2021 в 06:04
1 ответ

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

httpd.conf
------------
<VirtualHost *:2022>
    ProxyPass / unix:/home/user/flask_app/myproject.sock|uwsgi://localhost/
</VirtualHost>

0
ответ дан 19 November 2021 в 02:56

Теги

Похожие вопросы