SELinux启用系统中NGINX连接Node.js报Permission Denied错误的解决方法
Connect() to 127.0.0.1:3000 failed (13: Permission denied) while connecting to upstream
我在启用SELinux的系统上遇到NGINX尝试连接运行在3000端口的Node.js应用时出现“Permission denied”错误的问题,经过排查,通过调整SELinux策略解决了该问题,具体步骤如下:
检查SELinux状态:确认系统上SELinux已启用并处于强制模式,执行命令:
sestatus查看SELinux拒绝记录:检查SELinux审计日志中与NGINX尝试连接Node.js应用相关的拒绝记录,执行命令:
sudo grep nginx /var/log/audit/audit.log | grep denied生成SELinux策略:使用audit2allow工具根据审计日志中的拒绝记录生成SELinux策略,执行命令:
sudo grep nginx /var/log/audit/audit.log | grep denied | audit2allow -M nginx_connect加载SELinux策略:将生成的策略模块加载到SELinux中,执行命令:
sudo semodule -i nginx_connect.pp验证SELinux策略状态:确认新策略已成功加载,执行命令:
sudo semodule -l | grep nginx_connect重启NGINX:调整SELinux策略后,重启NGINX以应用更改,执行命令:
sudo systemctl restart nginx
该方法对我有效。
内容的提问来源于stack exchange,提问作者Saneesh

