¿Cómo utilizar sockets de dominio UNIX detrás de Apache/mod_proxy_uwsgi?

¿Cómo utilizar sockets de dominio UNIX detrás de Apache/mod_proxy_uwsgi?

En mi sistema de desarrollo estoy ejecutando una aplicación Flask WSGI con uwsgi y nginx. Sin embargo, en el servidor de producción necesito usar Apache en lugar de nginx, así que estoy intentando hacerlo. En nginx el sitio está montado así:

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

y funciona. En Apache probé esto:

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

lo que me da un error 503 con esto en el archivo de registro:

[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

Habilité los módulos mod_proxy y mod_proxy_uwsgi. No entiendo lo de "no existe tal archivo o directorio". El archivo socket está claramente donde se supone que debe estar.

Por supuesto, detuve nginx y luego reinicié Apache para evitar que nginx retuviera ese socket.

Eldocumentaciónde la directiva ProxyPass no explica qué significa la parte después del carácter de barra vertical ("|"), así que no sé qué poner allí y por qué.

Respuesta1

Tenía una configuración similar para una aplicación Django y resolví este mensaje de error moviendo la ubicación del archivo socket de /tmpa /var/lib/uwsgi. Asegúrese de que /var/lib/uwsgisea propiedad del mismo usuario y grupo bajo el que se ejecutan su servidor web y uWSGI para que uWSGI pueda crear el archivo de socket.

información relacionada