NGINX优化

小编 2026-07-11 阅读:1458 评论:0
目录1    版本号隐藏    1 2    软件名更改    13    日志轮滚    44...

目录

1    版本号隐藏    1

2    软件名更改    1

3    日志轮滚    4

4    关闭指定日志    4

5    日志权限设置    4

6    目录访问控制    4

7    限制IP访问    6

 

  1. 版本号隐藏

    配置文件添加配置:

    http {

        ···

        server_tokens off;

        ···

    }

     

    官方参数资料:http://nginx.org/en/docs/http/ngx_http_core_module.html

  2. 软件名更改

    要实现软件名及版本号的修改,需要对源码文件进行改动后,编译安装;

    所需修改文件分别是:

    nginx-1.12.1/src/core/nginx.h

    nginx-1.12.1/src/http/ngx_http_header_filter_module.c

    nginx-1.12.1/src/http/ngx_http_special_response.c

     

    源码文件如下:

    [root@c1 ~/nginx-1.12.1/src/core]# sed -n '13,17p' nginx.h

    #define NGINX_VERSION "1.12.1"

    #define NGINX_VER "nginx/" NGINX_VERSION

     

    #ifdef NGX_BUILD

    #define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD ")"

    #else

    #define NGINX_VER_BUILD NGINX_VER

    #endif

     

    #define NGINX_VAR "NGINX"

    #define NGX_OLDPID_EXT ".oldbin"

     

    修改后如下:

    #define NGINX_VERSION "5.1.8"

    #define NGINX_VER "KZH/" NGINX_VERSION

     

    #ifdef NGX_BUILD

    #define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD ")"

    #else

    #define NGINX_VER_BUILD NGINX_VER

    #endif

     

    #define NGINX_VAR "KZH"

    #define NGX_OLDPID_EXT ".oldbin"

     

    源码文件如下:

    [root@c1 ~/nginx-1.12.1/src/http]# sed -n '49p' ngx_http_header_filter_module.c

    static u_char ngx_http_server_string[] = "Server: nginx" CRLF;

     

    修改后如下:

    static u_char ngx_http_server_string[] = "Server: KZH" CRLF;

     

    源码文件如下:

    [root@c1 ~/nginx-1.12.1/src/http]# sed -n '21,38p' ngx_http_special_response.c

    static u_char ngx_http_error_full_tail[] =

    "<hr><center>" NGINX_VER "</center>" CRLF

    "</body>" CRLF

    "</html>" CRLF

    ;

     

     

    static u_char ngx_http_error_build_tail[] =

    "<hr><center>" NGINX_VER_BUILD "</center>" CRLF

    "</body>" CRLF

    "</html>" CRLF

    ;

     

     

    static u_char ngx_http_error_tail[] =

    "<hr><center>nginx</center>" CRLF

    "</body>" CRLF

    "</html>" CRLF

     

    修改后如下:

    static u_char ngx_http_error_full_tail[] =

    "<hr><center>" NGINX_VER "(http://cnblogs.com/kazihuo)</center>" CRLF

    "</body>" CRLF

    "</html>" CRLF

    ;

     

     

    static u_char ngx_http_error_build_tail[] =

    "<hr><center>" NGINX_VER_BUILD "</center>" CRLF

    "</body>" CRLF

    "</html>" CRLF

    ;

     

     

    static u_char ngx_http_error_tail[] =

    "<hr><center>KZH</center>" CRLF

    "</body>" CRLF

    "</html>" CRLF

     

    [root@c1 ~/nginx-1.12.1]# ./configure --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --prefix=/usr/local/kzh/

    [root@c1 ~/nginx-1.12.1]# make && make install

    [root@c1 /usr/local/kzh/sbin]# ./nginx

     

    源码文件显示:

    [root@c1 ~]# curl -I 192.168.10.11:80

    HTTP/1.1 200 OK

    Server: nginx

    Date: Thu, 07 Dec 2017 01:12:27 GMT

    Content-Type: text/html

    Content-Length: 612

    Last-Modified: Wed, 06 Dec 2017 19:15:30 GMT

    Connection: keep-alive

    ETag: "5a2841d2-264"

    Accept-Ranges: bytes

     

    修改后页面显示:

    [root@c1 ~]# curl -I 192.168.10.11:88

    HTTP/1.1 200 OK

    Server: KZH/5.1.8

    Date: Thu, 07 Dec 2017 01:12:31 GMT

    Content-Type: text/html

    Content-Length: 612

    Last-Modified: Thu, 07 Dec 2017 00:44:19 GMT

    Connection: keep-alive

    ETag: "5a288ee3-264"

    Accept-Ranges: bytes

     

  3. 日志轮滚

    # cat /server/scripts/cut_log.sh

    #/bin/bash

    cd /usr/local/nginx/logs/ && /bin/mv access.log access-$(date -d "-1 day" +%F).log

    /usr/local/nginx/sbin/nginx -s reload

    # crontab -l

    1 * * * * /bin/sh /server/scripts/cut_log.sh

  4. 关闭指定日志

    实际工作中,日志写入消耗磁盘I/O,对于负载均衡器健康节点检查或特定文件日志不需记录;

    用location标签匹配不记录日志的元素扩展名,关闭其日志:

    NGINX优化

  5. 日志权限设置

    日志目录权限给了NGINX用户,会成为安全隐患:

    # chown -R root.root /usr/local/nginx/logs/

    # chown -R 700 /usr/local/nginx/logs/

  6. 目录访问控制

    eg1:配置Nginx,禁止解析指定目录下的指定程序:

    NGINX优化

     

        对上述目录的限制必须写在Nginx处理PHP服务配置的前面,如下:

    NGINX优化

     

        eg2:禁止访问*.txt和*.doc文件:

    NGINX优化

     

        eg3:禁止访问单个目录:

    NGINX优化

     

        禁止访问多个目录:

    NGINX优化

     

        eg4:禁止访问目录并返回指定HTTP状态码:

    NGINX优化

        应用场景:对于集群的共享存储,一般是存放静态资源文件,所以可以禁止执行指定扩展名的程序,例:.php .sh .pl .py

  7. 限制IP访问

    eg1:只允许指定IP访问该目录,且支持PHP解析:

    NGINX优化

        eg2:限制指定IP或IP段访问:

    NGINX优化

     

-------------------------------------------------------------

作者:罗穆瑞
出处:http://www.cnblogs.com/kazihuo/

转载请保留此段声明,且在文章页面明显位置给出原文链接,谢谢!

------------------------------------------------------------------------------

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

------------------------------------------------------------------------------

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表