背景介绍
现在大部分项目通过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
总结
通过以上两种方式可以分别对关键的响应头进行修改或删除从而做到安全审计的要求,不对外暴露真实的服务信息