东瑜

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  135 随笔 :: 0 文章 :: 11 评论 :: 21万 阅读

作者:@张扶摇
本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhangshengdong/p/15393213.html


目录

摘要
1.修改nginx.h文件
2.修改ngx_http_header_filter_module.c
3.源编译和make
4.生成的二进制文件
5.查看版本信息

摘要

Nginx作为开源web中间件,被广泛应用。因此源编译或者yum安装,都会带有其原有的nginx版本。很容易被针对,因此,通过修改nginx的源码。隐藏nginx版本和头部信息,保障nginx的安全。操作如下:

1.修改nginx.h文件

位置为:/nginx-1.20.0/src/core
修改内容如下:

#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_


#define nginx_version      1020000
#define NGINX_VERSION      "1.0"                        //我修改的内容
#define NGINX_VER          "zsdweb/" NGINX_VERSION      //我修改的内容

#ifdef NGX_BUILD
#define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD    NGINX_VER
#endif

#define NGINX_VAR          "ZSDWEB"                       //我修改的内容
#define NGX_OLDPID_EXT     ".oldbin"


#endif /* _NGINX_H_INCLUDED_ */

2.修改ngx_http_header_filter_module.c

通过linux命令参看:

[root@localhost http]# cat ngx_http_header_filter_module.c |grep server_string
static u_char ngx_http_server_string[] = "Server: ZSDWEB" CRLF;

上述可以看到我修改的version为zsdweb,版本为1.0

3.源编译和make

./configure --prefix=/opt/nginx --with-http_gunzip_module --with-http_gzip_static_module --with-pcre=/opt/soft/pcre-8.44 --with-zlib=/opt/soft/zlib-1.2.11 --with-http_ssl_module --with-openssl=/opt/soft/openssl-1.1.1l
make

4.生成的二进制文件

[root@localhost objs]# pwd
/opt/soft/nginx-1.20.0/objs
您在 /var/spool/mail/root 中有邮件
[root@localhost objs]# ls -lrt
总用量 7924
drwxr-xr-x 9 root root    4096 427 14:42 src
-rw-r--r-- 1 root root     657 10月 11 14:02 ngx_auto_headers.h
-rw-r--r-- 1 root root   17671 10月 11 14:02 autoconf.err
-rw-r--r-- 1 root root    6287 10月 11 14:02 ngx_modules.c
-rw-r--r-- 1 root root   43098 10月 11 14:02 Makefile
-rw-r--r-- 1 root root    7334 10月 11 14:02 ngx_auto_config.h
-rw-r--r-- 1 root root   35312 10月 11 14:06 ngx_modules.o
-rwxr-xr-x 1 root root 7967912 1011 14:06 nginx

5.查看版本信息

[root@localhost objs]# ./nginx -v
nginx version: zsdweb/1.0

至此,nginx编译成功,替换原来的版本软件即可。修改源码也不是那么的困难,也都是一个个c语言文件组测。



感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接
posted on   东瑜  阅读(726)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
\\页脚html代码
点击右上角即可分享
微信分享提示