nginx/HHVM에서 UNIX 소켓을 구성하는 방법은 무엇입니까?

nginx/HHVM에서 UNIX 소켓을 구성하는 방법은 무엇입니까?

이것이 내가 지금까지 한 일입니다:

$ less /etc/nginx/hhvm.conf
location ~ \.(hh|php)$ {
    fastcgi_pass   unix:/var/run/hhvm/sock;
    include        fastcgi_params;
}

$ less /etc/hhvm/server.ini
; php options

pid = /var/run/hhvm/pid

; hhvm specific 

hhvm.server.file_socket = /var/run/hhvm/sock
hhvm.server.type = fastcgi
hhvm.server.default_document = index.php
hhvm.log.use_log_file = true
hhvm.log.file = /var/log/hhvm/error.log
hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc

올바른 TCP 포트 구성에서는 제대로 작동하지만 이를 UNIX 소켓 구성으로 바꾸면 잘못 구성된 포트와 동일한 nginx 오류가 발생합니다.

답변1

파일 권한을 확인해야 합니다.

nginx는 php5-fpm 또는 hhvm Unix 소켓에 쓸 수 있어야 합니다.

/var/log/nginx/error.lognginx 오류 로그에서 이것이 문제임을 확인하는 다음 과 같은 줄을 찾을 수 있습니다 .

2015/10/28 16:32:24 [crit] 14845#0: *1 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "HEAD /test.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "localhost"

해결책: nginx소켓을 소유한 그룹(보통 www-data)에 사용자를 추가합니다. 소켓 파일은 그룹에서 쓸 수 있어야 하므로 다음 명령을 사용하는 것이 가장 좋습니다.

# usermod -a -G www-data nginx

관련 정보