摘要
Nginx作為開源web中間件,被廣泛應(yīng)用。因此源編譯或者yum安裝,都會帶有其原有的nginx版本。很容易被針對,因此,通過修改nginx的源碼。隱藏nginx版本和頭部信息,保障nginx的安全。操作如下:
1.修改nginx.h文件
位置為:/nginx-1.20.0/src/core
修改內(nèi)容如下:
#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_
#define nginx_version 1020000
#define NGINX_VERSION "1.0" //我修改的內(nèi)容
#define NGINX_VER "zsdweb/" NGINX_VERSION //我修改的內(nèi)容
#ifdef NGX_BUILD
#define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD NGINX_VER
#endif
#define NGINX_VAR "ZSDWEB" //我修改的內(nèi)容
#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 4月 27 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 10月 11 14:06 nginx
5.查看版本信息
[root@localhost objs]# ./nginx -v
nginx version: zsdweb/1.0
至此,nginx編譯成功,替換原來的版本軟件即可。修改源碼也不是那么的困難,也都是一個個c語言文件組測。
本文摘自 :https://www.cnblogs.com/