百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

CentOS9系统安装Nginx模块`subs_filter`教程

off999 2025-01-20 15:40 14 浏览 0 评论

CentOS系统安装Nginx模块 subs_filter 教程 ?

**subs_filter** 是 Nginx 的一个非常实用的第三方模块,用于在Nginx代理的响应中替换指定的字符串。本文将详细介绍如何在 CentOS 系统上安装 Nginx 并添加 subs_filter 模块,确保您能够灵活地进行内容替换操作。


步骤1:安装Nginx ?

首先,在 CentOS 系统上安装 Nginx。可以使用包管理器 yum 进行安装:

Bash
sudo yum install nginx

解释

  • sudo:以超级用户权限执行命令。
  • yum install nginx:使用 yum 包管理器安装 Nginx

安装完成后,启动 Nginx 服务并设置为开机自启:

Bash
sudo systemctl start nginx
sudo systemctl enable nginx

解释

  • sudo systemctl start nginx:启动 Nginx 服务。
  • sudo systemctl enable nginx:设置 Nginx 服务在系统启动时自动启动。

步骤2:安装编译工具和Nginx依赖 ?

为了编译 Nginx 并添加 subs_filter 模块,需要安装必要的编译工具和依赖库:

sudo yum install gcc gcc-c++ make pcre-devel zlib-devel

解释

  • gcc 和 gcc-c++:GNU编译器,用于编译源代码。
  • make:自动化编译工具。
  • pcre-devel:Perl兼容正则表达式库的开发文件。
  • zlib-devel:压缩库的开发文件。

步骤3:下载Nginx源码

下载 Nginx 的源码并解压到一个临时目录:

mkdir ~/nginx_build
cd ~/nginx_build
wget http://nginx.org/download/nginx-1.20.1.tar.gz
tar -zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1

解释

  • mkdir ~/nginx_build:创建一个用于存放 Nginx 源码的目录。
  • cd ~/nginx_build:进入该目录。
  • wget http://nginx.org/download/nginx-1.20.1.tar.gz:下载 Nginx 1.20.1 版本的源码包。
  • tar -zxvf nginx-1.20.1.tar.gz:解压源码包。
  • cd nginx-1.20.1:进入解压后的源码目录。

注意:您可以根据需要下载其他版本的 Nginx 源码。


步骤4:下载 subs_filter 模块

下载 subs_filter 模块并将其放入 Nginx 源码的模块目录中:

cd ~/nginx_build/nginx-1.20.1/src/http/modules/
wget https://github.com/yaoweibin/ngx_http_substitutions_filter_module/archive/master.tar.gz
tar -zxvf master.tar.gz
mv ngx_http_substitutions_filter_module-master ngx_http_substitutions_filter_module

解释

  • cd ~/nginx_build/nginx-1.20.1/src/http/modules/:进入 Nginx 模块目录。
  • wget https://github.com/yaoweibin/ngx_http_substitutions_filter_module/archive/master.tar.gz:下载 subs_filter 模块的源码压缩包。
  • tar -zxvf master.tar.gz:解压模块源码包。
  • mv ngx_http_substitutions_filter_module-master ngx_http_substitutions_filter_module:重命名解压后的模块目录,便于引用。

步骤5:配置编译选项并编译安装Nginx ?

回到 Nginx 源码根目录,配置编译选项并编译安装 Nginx,同时添加 subs_filter 模块:

cd ~/nginx_build/nginx-1.20.1
./configure --add-module=./src/http/modules/ngx_http_substitutions_filter_module
make
sudo make install

解释

  • ./configure --add-module=./src/http/modules/ngx_http_substitutions_filter_module:配置 Nginx 编译选项,添加 subs_filter 模块。
  • make:编译 Nginx 源码。
  • sudo make install:以超级用户权限安装编译好的 Nginx

注意:安装后,Nginx 通常会安装在 /usr/local/nginx 目录下。


步骤6:验证安装 ?

验证 Nginx 是否安装成功以及是否添加了 subs_filter 模块:

/usr/local/nginx/sbin/nginx -V

解释

  • /usr/local/nginx/sbin/nginx -V:查看 Nginx 版本信息及编译时的模块信息。

预期输出: 输出中应包含 --add-module=./src/http/modules/ngx_http_substitutions_filter_module,表示 subs_filter 模块已成功添加。


步骤7:配置Nginx使用 subs_filter 模块

编辑 Nginx 的配置文件,添加 subs_filter 模块的相关配置。配置文件通常位于 /usr/local/nginx/conf/nginx.conf 或 /etc/nginx/nginx.conf。

sudo vim /usr/local/nginx/conf/nginx.conf

在 server 块中添加以下内容:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_server;
        subs_filter 'old_string' 'new_string' gi;
        # 选项解释:
        # 'gi' 表示全局替换和不区分大小写
    }
}

解释

  • proxy_pass http://backend_server;:将请求代理到后端服务器。
  • subs_filter 'old_string' 'new_string' gi;:在响应内容中将 old_string 替换为 new_string。选项 g 表示全局替换,i 表示不区分大小写。

注意

  • 请将 example.com 替换为您的实际域名。
  • 将 backend_server 替换为您的后端服务器地址。
  • 根据需要调整 old_string 和 new_string 的值。

步骤8:重启Nginx

在完成配置后,重启 Nginx 以使配置生效:

sudo /usr/local/nginx/sbin/nginx -s reload

解释

  • sudo /usr/local/nginx/sbin/nginx -s reload:以超级用户权限重新加载 Nginx 配置,无需完全重启服务,避免中断当前连接。

验证: 确保 Nginx 正常运行,并且 subs_filter 模块生效。可以通过访问 http://example.com 并检查响应内容是否进行了预期的字符串替换。


附加配置:设置开机自启 ?

为了确保 Nginx 在系统启动时自动运行,可以创建一个 systemd 服务文件。

  1. 创建服务文件
sudo vim /etc/systemd/system/nginx.service
  1. 添加以下内容
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PIDFile=/usr/local/nginx/logs/nginx.pid
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 重新加载 systemd 配置并启用服务
sudo systemctl daemon-reload
sudo systemctl enable nginx
sudo systemctl start nginx

解释

  • systemctl daemon-reload:重新加载 systemd 配置。
  • systemctl enable nginx:设置 Nginx 服务开机自启。
  • systemctl start nginx:启动 Nginx 服务。

注意事项 ??

  1. 版本兼容性
  2. 确保 Nginx 版本与 subs_filter 模块版本兼容,以避免编译或运行时错误。
  3. 依赖库
  4. 编译前确保所有必要的依赖库已安装,特别是 pcre-devel 和 zlib-devel。
  5. 权限管理
  6. 确保 Nginx 有权限访问配置文件和相关目录,避免权限不足导致服务启动失败。
  7. 配置测试
  8. 在重新加载 Nginx 配置前,使用以下命令测试配置文件是否有语法错误:
  9. sudo /usr/local/nginx/sbin/nginx -t
  10. 解释
  11. nginx -t:测试 Nginx 配置文件的语法正确性。
  12. 日志查看
  13. 如果 Nginx 无法启动或模块未生效,查看 Nginx 错误日志以获取详细信息,日志文件通常位于 /usr/local/nginx/logs/error.log。



总结

通过以上步骤,您已经成功在 CentOS 系统上安装了带有 subs_filter 模块的 Nginx。该模块允许您在代理响应中灵活地替换指定字符串,极大地增强了 Nginx 的内容处理能力。subs_filter 模块在处理动态内容替换、SEO优化等场景中具有广泛的应用。

小贴士

  • 模块扩展:除了 subs_filterNginx 还有许多其他第三方模块,可以根据需求进行扩展。
  • 安全性:定期更新 Nginx 和相关模块,确保系统安全。
  • 性能优化:根据实际流量和需求,优化 Nginx 配置以提升性能。

通过合理配置和维护,您的 Nginx 服务器将更加高效、安全,满足多样化的业务需求。

相关推荐

python入门到脱坑经典案例—清空列表

在Python中,清空列表是一个基础但重要的操作。clear()方法是最直接的方式,但还有其他方法也可以实现相同效果。以下是详细说明:1.使用clear()方法(Python3.3+推荐)...

python中元组,列表,字典,集合删除项目方式的归纳

九三,君子终日乾乾,夕惕若,厉无咎。在使用python过程中会经常遇到这四种集合数据类型,今天就对这四种集合数据类型中删除项目的操作做个总结性的归纳。列表(List)是一种有序和可更改的集合。允许重复...

Linux 下海量文件删除方法效率对比,最慢的竟然是 rm

Linux下海量文件删除方法效率对比,本次参赛选手一共6位,分别是:rm、find、findwithdelete、rsync、Python、Perl.首先建立50万个文件$testfor...

数据结构与算法——链式存储(链表)的插入及删除,

持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持上篇文章我们讲述了链表的基本概念及一些查找遍历的方法,本篇我们主要将一下链表的插入删除操作,以及采用堆栈方式如何创建链表。链...

Python自动化:openpyxl写入数据,插入删除行列等基础操作

importopenpyxlwb=openpyxl.load_workbook("example1.xlsx")sh=wb['Sheet1']写入数据#...

在Linux下软件的安装与卸载(linux里的程序的安装与卸载命令)

通过apt安装/协助软件apt是AdvancedPackagingTool,是Linux下的一款安装包管理工具可以在终端中方便的安装/卸载/更新软件包命令使用格式:安装软件:sudoapt...

Python 批量卸载关联包 pip-autoremove

pip工具在安装扩展包的时候会自动安装依赖的关联包,但是卸载时只删除单个包,无法卸载关联的包。pip-autoremove就是为了解决卸载关联包的问题。安装方法通过下面的命令安装:pipinsta...

用Python在Word文档中插入和删除文本框

在当今自动化办公需求日益增长的背景下,通过编程手段动态管理Word文档中的文本框元素已成为提升工作效率的关键技术路径。文本框作为文档排版中灵活的内容容器,既能承载多模态信息(如文字、图像),又可实现独...

Python 从列表中删除值的多种实用方法详解

#Python从列表中删除值的多种实用方法详解在Python编程中,列表(List)是一种常用的数据结构,具有动态可变的特性。当我们需要从列表中删除元素时,根据不同的场景(如按值删除、按索引删除、...

Python 中的前缀删除操作全指南(python删除前导0)

1.字符串前缀删除1.1使用内置方法Python提供了几种内置方法来处理字符串前缀的删除:#1.使用removeprefix()方法(Python3.9+)text="...

每天学点Python知识:如何删除空白

在Python中,删除空白可以分为几种不同的情况,常见的是针对字符串或列表中空白字符的处理。一、删除字符串中的空白1.删除字符串两端的空白(空格、\t、\n等)使用.strip()方法:s...

Linux系统自带Python2&yum的卸载及重装

写在前面事情的起因是我昨天在测试Linux安装Python3的shell脚本时,需要卸载Python3重新安装一遍。但是通过如下命令卸载python3时,少写了个3,不小心将系统自带的python2也...

如何使用Python将多个excel文件数据快速汇总?

在数据分析和处理的过程中,Excel文件是我们经常会遇到的数据格式之一。本文将通过一个具体的示例,展示如何使用Python和Pandas库来读取、合并和处理多个Excel文件的数据,并最终生成一个包含...

【第三弹】用Python实现Excel的vlookup功能

今天继续用pandas实现Excel的vlookup功能,假设我们的2个表长成这样:我们希望把Sheet2的部门匹在Sheet1的最后一列。话不多说,先上代码:importpandasaspd...

python中pandas读取excel单列及连续多列数据

案例:想获取test.xls中C列、H列以后(当H列后列数未知时)的所有数据。importpandasaspdfile_name=r'D:\test.xls'#表格绝对...

取消回复欢迎 发表评论: