鲲鹏麒麟使用Docker部署Nginx1.27.3

本次部署采用Docker方式进行部署,服务器为鲲鹏服务器,CPU架构为ARM64,操作系统版本信息为

# cat /etc/kylin-release 
Kylin Linux Advanced Server release V10 (Tercel)

下载镜像

1、从hub.docker.com找到相关的镜像,这里找到的版本是
https://hub.docker.com/r/arm64v8/nginx/tags?name=1.27
选择比较新的版本1.27.3,地址为:https://hub.docker.com/layers/arm64v8/nginx/1.27.3-otel/images/sha256-7de3eec83e4236d9a25ff83e154273a18dda4de34ef7c8d908de76e60e9bebb1?context=explore
2、在服务器上拉取镜像(代理服务器,可以直接访问docker的)

docker pull arm64v8/nginx:1.27.3-otel@sha256:7de3eec83e4236d9a25ff83e154273a18dda4de34ef7c8d908de76e60e9bebb1

3、保存镜像

# 给镜像打标签
docker tag e845dff95154 
<think>我们正在处理如何在已安装的Nginx1.27.3中添加ModSecurity模块的问题。根据用户提供的引用信息,我们有一些线索,但主要问题是如何将ModSecurity集成到现有的Nginx中。由于用户已经安装了Nginx1.27.3,我们可能需要重新编译Nginx以添加ModSecurity模块。引用[1]提到了ModSecurity的配置文件,引用[2]则提到Docker版的OpenResty配置,但用户使用的是Nginx1.27.3。步骤:1.确保已经安装了必要的依赖库。2.下载ModSecurity-Nginx连接器(通常称为ngx_http_modsecurity_module)。3.下载并编译ModSecurity本身(作为Nginx模块的依赖)。4.重新配置Nginx并加入ModSecurity模块,然后重新编译Nginx。5.配置ModSecurity规则和Nginx以启用ModSecurity。注意:因为用户已经安装了Nginx1.27.3,所以我们需要在重新编译时使用相同的配置参数,并添加ModSecurity模块。详细步骤:第一步:安装依赖在Ubuntu/Debian上,可能需要的依赖:sudoapt-getinstallbuild-essentiallibpcre3libpcre3-devzlib1gzlib1g-devlibssl-devlibtoolautoconfautomakepkg-configbisonflexlibxml2libxml2-devlibcurl4-openssl-dev第二步:下载并编译ModSecuritycd/path/to/gitclone--depth1-bv3/master--single-branchhttps://github.com/SpiderLabs/ModSecuritycdModSecuritygitsubmoduleinitgitsubmoduleupdate./build.sh./configuremakemakeinstall第三步:下载ModSecurity-Nginx连接器cd/path/to/gitclone--depth1https://github.com/SpiderLabs/ModSecurity-nginx.git第四步:获取当前Nginx的配置参数nginx-V#记录下输出中的configurearguments,我们将在重新编译时使用相同的参数,并添加新的模块。第五步:重新编译Nginx假设当前Nginx的源码目录为/path/to/nginx-1.27.3(如果没有源码,则需要下载相同版本的源码)cd/path/to/nginx-1.27.3./configure[原来的配置参数]--add-module=/path/to/ModSecurity-nginxmake#注意:不要运行makeinstall,否则会覆盖原有的安装。我们应该只替换二进制文件。sudocpobjs/nginx/usr/local/nginx/sbin/nginx#替换路径请根据实际情况修改第六步:配置ModSecurity复制配置文件:cp/path/to/ModSecurity/modsecurity.conf-recommended/usr/local/nginx/conf/modsecurity.confcp/path/to/ModSecurity/unicode.mapping/usr/local/nginx/conf/修改modsecurity.conf,设置:SecRuleEngineOnSecAuditLog/path/to/modsec_audit.logSecDebugLog/path/to/modsec_debug.log#调试日志,生产环境可以关闭或设置低级别第七步:在Nginx配置中加载ModSecurity在nginx.conf的http块中添加:modsecurityon;modsecurity_rules_file/path/to/modsecurity.conf;同时,可以添加规则文件,例如OWASPCRS。第八步:测试配置并重启Nginxnginx-tnginx-sreload#或systemctlrestartnginx注意:如果遇到问题,查看调试日志。由于用户之前提到OpenResty的路径(如/app/openresty),但用户现在使用的是Nginx1.27.3,所以路径应该根据实际安装调整。以上步骤假设用户有权限重新编译和替换二进制文件,并且在生产环境中操作前应进行备份。为了安全,建议在测试环境中先行尝试。生成相关问题:1.如何验证ModSecurity已经成功集成到Nginx中?2.ModSecurity有哪些常用的安全规则集?3.如何配置ModSecurity的规则以适应特定的应用?4.Nginx中如何禁用特定路径的ModSecurity检查?5.如何调试ModSecurity的规则?</think> ### 在 Nginx 1.27.3 中集成 ModSecurity 的完整指南 #### 一、前提条件 1. **已安装 Nginx 1.27.3** 2. **系统依赖**: ```bash # Ubuntu/Debian sudo apt install build-essential libpcre3-dev zlib1g-dev libxml2-dev libcurl4-openssl-dev ``` 3. **工作目录**(示例): ```bash mkdir ~/modsec_build && cd ~/modsec_build ``` #### 二、编译安装 ModSecurity 1. **安装依赖库**: ```bash git clone --depth 1 -b v3/master https://github.com/SpiderLabs/ModSecurity cd ModSecurity ./build.sh ./configure --with-nginx make sudo make install ``` 2. **获取 Nginx 连接器**: ```bash cd ~/modsec_build git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git ``` 3. **获取当前 Nginx 配置参数**: ```bash nginx -V 2>&1 | grep &#39;configure arguments&#39; > nginx_config_args.txt ``` #### 三、重新编译 Nginx 1. **下载对应源码**: ```bash wget https://nginx.org/download/nginx-1.27.3.tar.gz tar zxvf nginx-1.27.3.tar.gz cd nginx-1.27.3 ``` 2. **配置编译参数**: ```bash ./configure $(cat ~/modsec_build/nginx_config_args.txt) \ --add-module=~/modsec_build/ModSecurity-nginx ``` 3. **编译安装**: ```bash make sudo cp objs/nginx $(which nginx) # 替换现有二进制 ``` #### 四、配置 ModSecurity 1. **基础配置文件**: ```bash sudo cp ~/modsec_build/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsecurity.conf sudo cp ~/modsec_build/ModSecurity/unicode.mapping /etc/nginx/ ``` 2. **修改 `/etc/nginx/modsecurity.conf`**: ```nginx SecRuleEngine On SecAuditLog /var/log/nginx/modsec_audit.log SecDebugLog /var/log/nginx/modsec_debug.log SecDebugLogLevel 1 # 生产环境建议0或1 ``` 3. **Nginx 主配置启用**(在 `nginx.conf` 的 http 块中添加): ```nginx modsecurity on; modsecurity_rules_file /etc/nginx/modsecurity.conf; ``` #### 五、日志目录配置 ```bash sudo mkdir -p /var/log/nginx/modsec sudo chown nginx:nginx /var/log/nginx/modsec ``` #### 六、验证与重启 1. 测试配置: ```bash sudo nginx -t ``` 2. 重启服务: ```bash sudo systemctl restart nginx ``` #### 七、验证安装 1. 检查 Nginx 模块: ```bash nginx -V 2>&1 | grep -i modsecurity ``` 2. 测试请求: ```bash curl -I http://localhost/?param=&#39;<script>alert(1)</script>&#39; grep &#39;ModSecurity&#39; /var/log/nginx/modsec_audit.log ``` #### 最佳实践 1. **安全规则**:推荐使用 OWASP CRS(Core Rule Set): ```bash git clone https://github.com/coreruleset/coreruleset /etc/nginx/crs/ ``` 2. **生产环境优化**: ```nginx # 在 modsecurity.conf 中添加 SecRequestBodyLimit 128MB SecPcreMatchLimit 100000 ``` > 注意:此方法适用于 **手动编译安装的 Nginx**。若您使用包管理器安装的 Nginx,需通过官方源重建包或改用 Docker 部署[^1][^2]。 --- ### 相关问题 1. 如何验证 ModSecurity 规则是否成功拦截恶意请求? 2. 生产环境中 ModSecurity 的日志级别应如何优化? 3. 如何将 OWASP 核心规则集集成到现有 ModSecurity 配置中? 4. ModSecurity 启用后对 Nginx 性能的影响有多大?如何监控?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

angushine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值