在 Rocky Linux 上配置 Nginx 与 SELinux 的兼容性

在使用 Rocky Linux 部署 Nginx 时,如果使用nginx读取nfs目录内容,可能会遇到由于 SELinux 导致的权限问题。本文将介绍如何解决这些问题,使 Nginx 能够正常访问 NFS 挂载的 SSL 证书文件。

一、背景

SELinux(Security-Enhanced Linux)是一个强大的访问控制机制,它可以提高系统的安全性。然而,默认情况下,SELinux 可能会限制 Nginx 访问某些资源,例如通过 NFS 挂载的 SSL 证书文件。

二、解决步骤

1. 安装所需工具

为了能够生成 SELinux 策略模块,需要安装 policycoreutils-python-utils 包:

sudo dnf install policycoreutils-python-utils

2. 生成 SELinux 策略模块

使用 audit2allow 工具从 SELinux 的审计日志中生成策略模块:

sudo grep nginx /var/log/audit/audit.log | audit2allow -M nginx_ssl_access

3. 安装 SELinux 策略模块

安装生成的策略模块:

sudo semodule -i nginx_ssl_access.pp

4. 允许 Nginx 访问 NFS 文件系统

通过设置 SELinux 布尔值来允许 Nginx 访问 NFS 挂载的目录:

sudo setsebool -P httpd_use_nfs on

5. 恢复 SELinux 为强制模式

如果之前将 SELinux 设置为宽松模式,可以将其恢复为强制模式:

sudo setenforce 1

6. 重启 Nginx 服务

完成上述步骤后,重启 Nginx 服务以应用更改:

sudo systemctl restart nginx

7. 验证 Nginx 状态

检查 Nginx 的状态以确保其正常运行:

sudo systemctl status nginx
上一篇
下一篇