Nginx 优化

Posted IT技术随笔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

Nginx 性能优化

以上是关于Nginx 优化的主要内容,如果未能解决你的问题,请参考以下文章

Nginx——Nginx启动报错Job for nginx.service failed because the control process exited with error code(代码片段

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

如何优化C ++代码的以下片段 - 卷中的零交叉

从JVM的角度看JAVA代码--代码优化

Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段

nginx.conf 忽略了 nginx-ingress 配置映射片段