Apache / mod_proxy_uwsgi 뒤에서 UNIX 도메인 소켓을 사용하는 방법은 무엇입니까?

Apache / mod_proxy_uwsgi 뒤에서 UNIX 도메인 소켓을 사용하는 방법은 무엇입니까?

내 개발 시스템에서는 uwsgi 및 nginx를 사용하여 Flask WSGI 애플리케이션을 실행하고 있습니다. 하지만 프로덕션 서버에서는 nginx 대신 Apache를 사용해야 하므로 그렇게 하려고 합니다. nginx에서는 사이트가 다음과 같이 마운트됩니다.

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

그리고 그것은 작동합니다. Apache에서는 다음을 시도했습니다.

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

그러면 로그 파일에 503 오류가 발생합니다.

[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

mod_proxy 및 mod_proxy_uwsgi 모듈을 모두 활성화했습니다. "해당 파일이나 디렉터리가 없습니다"라는 부분을 이해하지 못합니다. 소켓 파일은 있어야 할 위치에 분명히 있습니다.

물론 nginx가 해당 소켓을 유지하지 못하도록 nginx를 중지한 다음 Apache를 다시 시작했습니다.

그만큼선적 서류 비치ProxyPass 지시어는 파이프("|") 문자 뒤의 부분이 무엇을 의미하는지 설명하지 않으므로 거기에 무엇을 넣어야 할지, 그 이유는 무엇인지 알 수 없습니다.

답변1

Django 애플리케이션에 대해 비슷한 설정이 있었고 소켓 파일의 위치를 /tmp​​에서 /var/lib/uwsgi. /var/lib/uwsgiuWSGI가 소켓 파일을 생성할 수 있도록 웹 서버와 uWSGI가 실행되는 동일한 사용자 및 그룹이 이 파일을 소유하고 있는지 확인하세요 .

관련 정보