Единорог и nginx (13: в доступе отказано)

Я запускаю приложение с ngnix и единорогом, но в журнале nginx получил эту ошибку

 *1 connect() to unix:/tmp/unicorn.sock failed (13: Permission denied) while connecting to upstream, client: 181.52.249.209, server: lovebeeroficial.com

Я нашел похожую ошибку, но не работает для меня, файл имеет все права

Я пытаюсь это Nginx потерпел неудачу (13: Отказано в доступе), когда запускаются рельсы с единорогом, и Nginx получает разрешение при подключении к Unicorn

-rwxrwxrwx. 1 azureuser azureuser    1 Feb 24 07:43 unicorn.sock

2 ответа

-rwxrwxrwx. 1 azureuser azureuser 1 Feb 24 07:43 unicorn.sock - это не похоже на сокет Unix.
srwxrwxrwx. 1 azureuser azureuser 1 Feb 24 07:43 unicorn.sock - это должно выглядеть так.

Вы должны проверить, где на самом деле находится ваш сокет.

Если вы уверены, что использование единорога /tmp, затем rm -rf /tmp/unicorn.sock и перезапустите единорога.

Чтобы проверить, что дело в SELinux, можно его отключить

      sudo setenforce 0

но отключать его небезопасно, и проблема вернется при перезагрузке

Хорошая подробная статья https://nts.strzibny.name/allowing-nginx-to-use-a-pumaunicorn-unix-socket-with-selinux/

Короче говоря, вам нужно выполнить команду и сохранить вывод в файл nginx.te.

      sudo grep nginx /var/log/audit/audit.log | audit2allow -m nginx                                                                                                                        
                                                           
module nginx 1.0;                                          
                                                                
require {                                                                                                                                                                                                            
        type httpd_t;                                           
        type initrc_t;                                                                                                                                                                                               
        class unix_stream_socket connectto;              
}                                                         
                                                       
#============= httpd_t ==============                        
allow httpd_t initrc_t:unix_stream_socket connectto;  

а затем проверяем, компилируем и вычитаем

      sudo checkmodule -M -m -o nginx.mod nginx.te
sudo semodule_package -o nginx.pp -m nginx.mod
sudo semodule -i nginx.pp
Другие вопросы по тегам