Nginx 优化
Nginx 安全优化
隐藏 Nginx 版本号
实现隐藏 Nginx 版本号的方法是:在 Nginx 配置文件 nginx.conf 中的 http 标签段内加入 “server_tokens off;”参数,如下:
http{
……
server_tokens off;
……
}
此参数放置在 http 标签内,作用是控制 http response header 内的 Nginx 版本号的显示,以及错误信息中 Nginx 版本号的显示。此参数的默认值为 on,表示显示 Nginx 版本号。点击查看官方中文说明。
隐藏 Nginx 软件名及版本号
需要修改3个 Nginx 源代码文件并重新编译安装 Nginx。
第1个文件:nginx-1.14.0/src/core/nginx.h(13、14、22行)
13 #define NGINX_VERSION "1.14.0" # 将1.14.0修改为想要显示的版本号,如1.6.2
14 #define NGINX_VER "nginx/" NGINX_VERSION # 将 nginx 修改为想要修改的软件名称,如 Apache
22 #define NGINX_VAR "NGINX" # 将 NGINX 修改为想要修改的软件名称,如 Apache
第2个文件:nginx-1.14.0/src/http/ngx_http_header_filter_module.c(49行)
49 static u_char ngx_http_server_string[] = "Server: nginx" CRLF; #把“Server: nginx”替换为“Server: Apache”
第3个文件:nginx-1.14.0/src/http/ngx_http_special_response.c(22、36行)
22 "<hr><center>" NGINX_VER "</center>" CRLF # 此行需要修改,修改为"<hr><center>" NGINX_VER "(http://www.cnblogs.com/wushuaishuai/)</center>" CRLF
36 "<hr><center>nginx</center>" CRLF # 此行需要修改,将对外展示的 nginx 改为 Apache
具体操作步骤:
- 关闭 Nginx 进程
/usr/local/nginx/sbin/nginx -s stop
- 备份一下之前的 nginx 安装目录
cp -Rp /usr/local/nginx-1.14.0/ /usr/local/nginx-1.14.0-$(date +%Y%m%d)
- 查看一下配置参数并记录下来
/usr/local/nginx/sbin/nginx -V
- 使用 sed 命令一键修改(只测试了1.14.0版本)
sed -i 's#"1.14.0"#"1.6.2"#g' nginx-1.14.0/src/core/nginx.h
sed -i 's#"nginx/"#"Apache/"#g' nginx-1.14.0/src/core/nginx.h
sed -i 's#"NGINX"#"Apache"#g' nginx-1.14.0/src/core/nginx.h
sed -i 's#Server: nginx#Server: Apache#g' nginx-1.14.0/src/http/ngx_http_header_filter_module.c
sed -i 's#NGINX_VER_BUILD "#NGINX_VER "(http://www.cnblogs.com/wushuaishuai/)#g' nginx-1.14.0/src/http/ngx_http_special_response.c
sed -i 's#nginx</center>#Apache</center>#g' nginx-1.14.0/src/http/ngx_http_special_response.c
- 最后重新编译安装,如果之前经过配置的 nginx 源代码删掉了,则需要重新下载 nginx 源码包并使用之前的配置参数重新配置一下再编译安装
cd nginx-1.14.0/
make
make install
- 启动 Nginx 进程
/usr/local/nginx/sbin/nginx