Como usar soquetes de domínio UNIX atrás do Apache/mod_proxy_uwsgi?

Como usar soquetes de domínio UNIX atrás do Apache/mod_proxy_uwsgi?

No meu sistema de desenvolvimento, estou executando um aplicativo Flask WSGI com uwsgi e nginx. Porém no servidor de produção preciso usar o Apache em vez do nginx, então estou tentando fazer isso. No nginx o site é montado assim:

location /flaskapp { uwsgi_pass unix:/tmp/flaskapp.sock; }

e funciona. No Apache eu tentei isso:

 ProxyPass /flaskapp unix:/tmp/flaskapp.sock|uwsgi://flaskapp

o que me dá um erro 503 com isso no arquivo de log:

[Fri Jan 01 13:19:45.551524 2021] [proxy:error] [pid 14167] (2)No such file or directory: AH02454: uwsgi: attempt to connect to Unix domain socket /tmp/flaskapp.sock (flaskapp) failed
[Fri Jan 01 13:19:45.551802 2021] [:error] [pid 14167] [client ::1:48950] AH10101: failed to make connection to backend: httpd-UDS:0

Ativei os módulos mod_proxy e mod_proxy_uwsgi. Não entendo a parte "nenhum arquivo ou diretório". O arquivo de soquete está claramente onde deveria estar.

É claro que parei o nginx e reiniciei o Apache para evitar que o nginx mantivesse o controle nesse soquete.

Odocumentaçãoda diretiva ProxyPass não explica o que significa a parte após o caractere pipe ("|"), então não sei o que colocar lá e por quê.

Responder1

Eu tinha uma configuração semelhante para um aplicativo Django e resolvi essa mensagem de erro movendo o local do arquivo de soquete de /tmppara /var/lib/uwsgi. Certifique-se de que /var/lib/uwsgipertence ao mesmo usuário e grupo em que seu servidor web e uWSGI são executados para que uWSGI possa criar o arquivo de soquete.

informação relacionada