Я использую 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
Увидев еще несколько примеров, я просто попробовал другую версию кодирования строки ProxyPass следующим образом, и она сработала для меня:
httpd.conf
------------
<VirtualHost *:2022>
ProxyPass / unix:/home/user/flask_app/myproject.sock|uwsgi://localhost/
</VirtualHost>