当前位置: 首页 > news >正文

OracleLinux9 安装 fcgiwrap 并添加 selinux 规则以在 nginx 调用

fcgiwrap在其他系统上一般直接输命令就能安装,但是OracleLinux9会提示找不到软件包。安装成功后,selinux也会阻碍nginx的调用。

原因

OracleLinux9的这个软件包位于默认不启用的developer仓库。

安装fcgiwrap

  1. 编辑配置,将repo启用
sudo vi /etc/yum.repos.d/oracle-epel-ol9.repo
sudo dnf update
  1. 成功安装
sudo dnf install fcgiwrap

手动配置fcgiwrap服务

安装的fcgiwrap并没有systemd服务,因此需要手动配置

  1. 新建/var/run/nginx目录
cd /var/run
sudo mkdir nginx
sudo chown nginx:nginx nginx
  1. 创建fcgiwrap服务(需要先安装nginx)
sudo dnf install nginx
sudo nano /etc/systemd/system/fcgiwrap.service

写入如下内容

[Unit]
Description=Simple CGI Server
After=network.target[Service]
ExecStart=/usr/sbin/fcgiwrap -s unix:/run/nginx/fcgiwrap.socket
User=nginx
Group=nginx[Install]
WantedBy=multi-user.target
  1. 刷新并启动服务,查看运行状态
sudo systemctl daemon-reload
sudo systemctl start fcgiwrap
sudo systemctl status fcgiwrap
  1. 启动正常后,设置开机启动
sudo systemctl enable fcgiwrap

配置nginx CGI

  1. 进入某网站的配置
sudo vi /etc/nginx/conf.d/yourweb.conf
  1. 写入cgi配置
location /cgi-bin/yourcgi {include fastcgi_params;fastcgi_pass unix:/var/run/nginx/fcgiwrap.socket;fastcgi_param SCRIPT_FILENAME /path/to/your/cgi/file;# 继续传递其他参数...
}

解决selinux问题

在这一步后,nginx对cgi的访问仍然会被selinux拦截,因此还需要放行访问。请按如下步骤操作

  1. 创建审计规则文件夹
sudo mkdir /etc/selinux/audit2allow
cd /etc/selinux/audit2allow
  1. 访问目标cgi路径,被拒绝访问
  2. 查看审计拦截情况
sudo cat /var/log/audit/audit.log | grep nginx | grep denied

输出示例如下

type=AVC msg=audit(1699720883.997:1431781): avc:  denied  { connectto } for  pid=2205472 comm="nginx" path="/var/run/nginx/fcgiwrap.socket" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:system_r:unconfined_service_t:s0 tclass=unix_stream_socket permissive=0
  1. 基于此创建放行规则
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M allow_nginx_proxy_fcgiwrap

正常情况下输出:

******************** IMPORTANT ***********************
To make this policy package active, execute:semodule -i allow_nginx_proxy_fcgiwrap.pp
  1. 加载放行规则
sudo semodule -i allow_nginx_proxy_fcgiwrap.pp
  1. 检查是否能正常访问cgi,如不行,重复执行2~6直至成功访问。
  2. 大功告成!
http://www.lryc.cn/news/228535.html

相关文章:

  • Django框架
  • 用C语言来实现冒泡排序
  • flink的副输出sideoutput单元测试
  • 使用Inis搭配内网穿透实现Ubuntu上快速搭建博客网站远程访问
  • 基于蝴蝶算法优化概率神经网络PNN的分类预测 - 附代码
  • flink的KeyedBroadcastProcessFunction测试
  • 【pytorch深度学习】torch-张量Tensor
  • odoo16前端框架源码阅读——rpc_service.js
  • Nat. Med. | 成年人的城市生活环境对心理健康的影响
  • stm32 WIFI模块_8266使用
  • 【C/C++】malloc 或者 new 动态分配内存
  • 如果让你重新开始学 C/C++,你的学习路线会是怎么选择?
  • PCL安装与使用
  • 力扣刷题-二叉树-对称二叉树
  • 常见面试题-计算机网络相关
  • leetcode做题笔记231. 2 的幂
  • AI主播“败走”双11,想用AI省成本的商家醒醒吧,程序员不必担心失业,发展空间依旧很大
  • ◢Django 自写分页与使用
  • 某城高速综合管控大数据大屏可视化【可视化项目案例-04】
  • 如何在Linux下进行文件查看
  • OSG练习:模仿Ventsim制作三维矿井智能通风系统
  • 【数据结构】非递归实现二叉树的前 + 中 + 后 + 层序遍历(听说面试会考?)
  • 32 Feign性能优化
  • 星岛专栏|从Web3发展看金融与科技的融合之道
  • 什么是网络爬虫?
  • 酷柚易汛ERP - 商品库存余额表操作指南
  • 第27期 | GPTSecurity周报
  • 大数据-玩转数据-Flume
  • 【Linux】进程概念IV 进程地址空间
  • Flink在汽车行业的应用【面试加分系列】