nginx 유닉스 도메인 소켓 오류


18

나는 fedora 17을 사용하고 유닉스 도메인 소켓을 사용하여 uwsgi로 nginx를 설정할 때 소켓을 적절한 권한으로 디렉토리에 배치하면 괜찮지 만 소켓을 배치 /tmp하면 nginx 오류가 발생합니다.

connect() to unix:/tmp/MySite.sock failed (2: No such file or directory) while connecting to upstream

파일이 존재하며 nginx 사용자에 대한 읽기 / 쓰기 권한이 있습니다. 그러나이 오류의 원인은 실제로 나를 미치게합니다. 누군가가 그것을 알아낼 수 있습니다.

답변:


33

프로세스 간 통신용 소켓은에 배치 할 수 없습니다 /tmp.

보안상의 이유로, 최신 버전의 Fedora는 네임 스페이스 임시 디렉토리를 사용 합니다 . 즉, 모든 서비스는 완전히 다르게 보이고 /tmp해당 디렉토리에서 자신의 파일 만 볼 수 있습니다.

이 문제를 해결하려면, 같은 다른 디렉토리에 소켓을 배치 /run(이전으로 알려진 /var/run).


1
/ run은 일반 사용자에게는 쓸 수 없습니다
hostmaster

1
/run직접 쓰기 가능하지는 않지만, systemd가아래 에 두 프로세스가 쓸 수있는 디렉토리를 작성하도록 지시 할 수 있습니다 .
Michael Hampton

검색을 돕기 위해 centos 7에도 적용되며 소켓 폴더를 / run working으로 이동합니다. 모든 계정이 폴더와 파일을 tmp (테스트 할 777로 설정)로 볼 수 있기 때문에이 문제를 찾는 것은 쉽지 않습니다.
JosephK

0

예! 이 도움말!

uwsgi에서 check-startup-logs 메시지를보고 있었지만 시작 로그에 데이터가 없었으며 무슨 일이 있었는지 알 수 없었습니다. 양말 파일을 / tmp가 아닌 위치로 변경하고 다음을 추가해야했습니다.

캐치 예외 = true

wsgi의 ini 파일에. 내가 존재하지 않는 디렉토리에 filehandler 위치를 기록하도록 지정 했으므로 처음에는 오류를 기록 할 수 없었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.