如何隐藏或修改Docker容器中的Nginx响应头中的Server

2023-09-20 17:22:36

背景介绍

现在大部分项目通过Nginx作为反向代理,实际由于安全审计要求需要隐藏或修改响应头的Server信息,传统的项目直接部署在nginx服务器中,只需要在nginx服务器安装ngx_http_headers_more_filter_module插件,然后通过修改nginx.conf文件配置即可,但是自从容器化时代来了之后,大部分项目都通过kubernetes或docker部署的,所以容器化的nginx如何修改对应的响应头,下面进行详细的介绍

实施步骤

修改Dockerfile的基础镜像

修改nginx基础镜像,引入安装了ngx_http_headers_more_filter_module插件的nginx镜像:rookiezoe/nginx,对应的镜像目前实测下来可用的有1.23.3、1.21.3版本

FROM rookiezoe/nginx:1.23.3
ENV LANG=C.UTF-8
ENV TZ=Asia/Shanghai

COPY dist/ /usr/share/nginx/html
COPY error.html /usr/share/nginx/html
COPY nginx-default.conf /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/nginx.conf
RUN chown -R nginx:nginx /usr/share/nginx/html

EXPOSE 7081
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
CMD ["/entrypoint.sh"]```

修改宿主机的nginx配置文件

修改nginx.conf文件,在http作用域之外追加load_module modules/ngx_http_headers_more_filter_module.so; 在htto作用域之内,server作用域之外增加more_set_headers或more_clear_headers;
删除响应头Server即通过more_clear_headers命令如下图所示:
在这里插入图片描述
修改响应头Server值的配置即通过more_set_headers命令如下图所示:
在这里插入图片描述

测试验证

请求nginx所在的端口服务,比如https:/xxx.xxx/xx/,按照以上步骤中的通过more_clear_headers命令执行完如下图所示查看响应头信息中是否有Server
在这里插入图片描述
如果按照more_set_headers命令执行完后如下图所示查看Server值是否变更为mytest
在这里插入图片描述

总结

通过以上两种方式可以分别对关键的响应头进行修改或删除从而做到安全审计的要求,不对外暴露真实的服务信息

更多推荐

uni-app 之 vue位置怎样设置

vue位置怎样设置VUE是一款流行的JavaScript框架,可以构建动态用户界面。在VUE中,位置的设置是非常重要的,因为它会影响到页面元素的布局。下面将详细介绍VUE中位置设置的基本概念以及如何使用VUE进行位置设置。在VUE中,位置设置一般使用CSS的position属性来实现。position属性有四个属性值:

Spring Boot魔法:简化Java应用的开发与部署

文章目录什么是SpringBoot?1.自动配置(Auto-Configuration)2.独立运行(Standalone)3.生产就绪(ProductionReady)4.大量的起步依赖(StarterDependencies)SpringBoot的魔法1.起步依赖(StarterDependencies)2.自动配

CMake:测试的其他补充(重要)

CMake:测试的其他补充(重要)导言预期测试失败项目结构CMakeLists.txt相关源码输出结果使用超时测试运行时间过长的测试项目结构CMakeLists.txt相关源码输出结果并行测试项目结构CMakeLists.txt相关源码输出结果运行测试子集项目结构CMakeLists.txt相关源码输出结果使用测试固件

uniapp实现大气质量指标图(app端小程序端均支持,app-nvue不支持画布)

效果图如下:思路:1.首先我想到的就是使用图标库echarts或ucharts,可是找了找没有找到类似的。2.其次我就想用画布来实现这个效果,直接上手。(app-vue和小程序均可以实现,但是在app-nvue页面不支持画布,尝试了一下再nvue页面直接导致程序闪退)3.后来,使用手动创建一个竖向的类似效果。注意:1.

【力扣每日一题】2023.9.21 收集树中金币

目录题目:示例:分析:代码:题目:示例:分析:题目给我们一棵树,不过这棵树不是普通的树,而是无向无根树。给我们一个二维数组表示节点之间的连接关系,以及一个一维数组表示每个节点是否有金币。我们可以从任何一个节点出发,并且可以收集距离两格的节点的金币,每次可以移动到相邻的节点。问我们要收集完所有的金币并且最终要回到起点,最

Python爬虫:aiohttp的介绍和基本使用

aiohttp是一个用于编写异步网络应用程序的Python库,它建立在Python3.5+的asyncio框架之上。它允许你创建高性能的异步HTTP客户端和服务器,以处理并发请求和响应。下面是关于aiohttp的介绍和基本使用方法:安装aiohttp你可以使用pip来安装aiohttp:pipinstallaiohtt

python魔术方法_对象_继承_复写_变量注解_函数注解_多态(04)

文章目录python魔术方法_对象_继承_复写_变量注解_函数注解_多态(04)1对象的魔术方法1.1魔术方法实例:2对象的封装2.1私有变量:开头__(2个下划线)定义2.2案例私有变量访问:3继承3.1类继承语法:3.2类继承案例3.3多继承3.3.1多继承语法3.3.2多继承属性(pass使用)4复写4.1对父类

如何使用ArcGIS Pro提取河网水系

DEM数据除了可以看三维地图和生成等高线之外,还可以用于水文分析,这里给大家介绍一下如何使用ArcGISPro通过水文分析提取河网水系,希望能对你有所帮助。数据来源本教程所使用的数据是从水经微图中下载的DEM数据,除了DEM数据,常见的GIS数据都可以从水经微图中下载,你可以通过关注公号“水经注GIS”,然后在后台回复

1.8python基础语法——数据类型转换

1)转换数据类型的作用用户输入的数据是字符串类型,可以用类型转换将字符串类型转换为相应的数据类型。2)转换数据类型的函数函数说明int(x[,base])将x转换为一个整数float(x)将x转换为一个浮点数complex(real[,imag])创建一个复数,real为实部,imag为虚部str(x)将对象x转换为字

软件设计原则扩展

一、引言经典的软件设计7大原则开闭原则(OpenClosePrinciple,OCP)依赖倒置原则(DependenceInversionPrinciple,DIP)单一职责原则(SimpleResponsibilityPrinciple,SRP)接口隔离原则(InterfaceSegregationPrinciple

从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)

不可变集合、方法引用1.不可变集合1.1什么是不可变集合1.2使用场景1.3不可变集合分类1.4不可变的list集合1.5不可变的Set集合1.6不可变的Map集合1.6.1:键值对个数小于等于101.6.2:键值对个数大于102.方法引用2.1体验方法引用2.2方法引用符2.3引用类方法2.4引用对象的实例方法2.5

热文推荐