Единорог и 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