1.添加参数隐藏Nginx版本号

vim /application/nginx/conf/nginx.conf

#http标签下添加
server_tokens off; #测试
[root@cobbler ~]# curl -I 172.16.1.15
HTTP/1.1 200 OK
Server: nginx #这里已经没有版本号了

2.更改源码隐藏Nginx软件名及版本号

#通过修改源码将Nginx及版本号替换为其他名称,更改完要重新编译
1. vim nginx-1.6.3/src/core/nginx.h #软件信息 #define NGINX_VERSION "2.2.2"
#define NGINX_VER "Peter/" NGINX_VERSION #define NGINX_VAR "Peter" 2. vim nginx-1.6.3/src/http/ngx_http_header_filter_module.c 49 static char ngx_http_server_string[] = "Server: Peter" CRLF; 3. vim nginx-1.6.3/src/http/ngx_http_special_response.c #报错页面信息展示 22 "<hr><center>" NGINX_VER "(http://www.cnblogs.com/Peter2014/)</center>" CRLF
29 "<hr><center>Peter</center>" CRLF
#重新编译后,进行测试
[root@cobbler nginx-1.6.3]# curl -I 172.16.1.15
HTTP/1.1 200 OK
Server: Peter

3.更改Nginx服务的默认用户

#方法1:修改配置文件
vim /application/nginx/conf/nginx.conf user nginx nginx; #方法2:编译时添加用户参数 ./configure --user=nginx --group=nginx --prefix=/application/nginx-1.6.3 --with-http_stub_status_module --with-http_ssl_module

4.优化worker进程的数量

#一般而言,worker进程的数量应等于CPU的核数;对于高并发业务,worker进程数量可以等于核数的2倍。

#修改nginx配置文件
vim /application/nginx/conf/nginx.conf worker_processes 2; #查看CPU核心数量
[root@cobbler ~]# grep processor /proc/cpuinfo | wc -l
2 #查看物理CPU的个数
[root@cobbler ~]# grep 'physical id' /proc/cpuinfo | sort | uniq | wc -l
1 #reload后检查结果
[root@cobbler ~]# ps -ef | grep nginx
root 48290 1 0 18:02 ? 00:00:00 nginx: master process sbin/nginx
nginx 54530 48290 0 20:25 ? 00:00:00 nginx: worker process
nginx 54531 48290 0 20:25 ? 00:00:00 nginx: worker process #注:uniq是一个去重命令,但注意aabb可以变为ab,abab则还是abab。所以去重之前要先用sort进行排序。

5.绑定不同worker进程到不同CPU核心上

#主要使用参数worker_cpu_affinity 配置worker和cpu的亲和度

vim /application/nginx/conf/nginx.conf

worker_processes  4;
worker_cpu_affinity 0001 0010 0100 1000; # 这里0001 0010 0100 1000是掩码,分别代表第1、2、3、4核cpu #假设worker进程数为4,cpu核心数为4,则掩码就为4位,分别对应不同的cpu核心。
#如果worker进程数为2,cpu核心数为4,则可以按照0101、1010为每个进程分配两个核心。
#八核cpu则按照00000001、00000010依次分配 #可以使用压力测试工具webbench进行压力测试,top观察每个cpu的使用率

6.Nginx事件处理模型优化

#Nginx的连接处理机制在不同的操作系统下会使用不同的I/O模型。Linux系统下使用epoll的I/O多路复用模型。
配置参数为use epoll,注意设置在events标签下,events区块用于设置连接进程。 vim /application/nginx/conf/nginx.conf events {
worker_connections 1024;
use epoll;
}

7.调整单个worker进程允许的客户端最大连接数

#参数worker_connections 20480;也是在events标签下设置;注意使用“ulimit -HSn 65535”设置单个进程的文件描述符的最大数量
vim /application/nginx/conf/nginx.conf events {
worker_connections 20480;
use epoll;
}

8.配置worker进程打开的最大文件数

#可以和ulimit的设置的数量一样,main标签下。

vim /application/nginx/conf/nginx.conf

worker_rlimit_nofile 65535;

9.开启高效文件传输模式

#sendfile()函数用于内核中进行两个文件描述符之间的数据拷贝,由于在内核运行,效率相比read write要高
#tcp_nopush参数允许将http response header和body的开始部分放在一个文件里进行发布,可以减少网络报文段的数量,提高I/O性能
#tcp_nodelay用于当数据发送时,内核不会马上发送,会等待更多的字节然后发送以提高I/O性能,如果小文件比较多就不要开启了,
#不然等待时间会比较长。
vim /application/nginx/conf/nginx.conf
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
}

10.设置连接超时

#keepalive_timeout用于设置连接超时,当客户端长时间没有请求则关闭tcp连接
#client_header_timeout用于设置读取请求头数据的超时时间,防止客户端利用http协议进行攻击
#client_body_timeout用于设置读取请求主体的超时时间,指2次成功读取之间的间隔
#send_timeout用于设置用户两次活动之间的间隔 vim /application/nginx/conf/nginx.conf http {
keepalive_timeout 60;
client_header_timeout 15;
client_body_timeout 15;
send_timeout 25;
}

11.限制上传文件的大小

#client_max_body_size用于限制请求主体的大小

vim /application/nginx/conf/nginx.conf

http {
client_max_body_size 8m;
}

Nginx服务安全设置和参数调优的更多相关文章

  1. 【nginx】nginx配置文件结构,内置变量及参数调优

    Nginx的配置文件是一个纯文本文件,它一般位于Nginx安装目录的conf目录下,整个配置文件是以block的形式组织的.每个block一般以一个大括号“{”来表示.block 可以分为几个层次,整 ...

  2. jvm系列(六):Java服务GC参数调优案例

    本文介绍了一次生产环境的JVM GC相关参数的调优过程,通过参数的调整避免了GC卡顿对JAVA服务成功率的影响. 这段时间在整理jvm系列的文章,无意中发现本文,作者思路清晰通过步步分析最终解决问题. ...

  3. 2021升级版微服务教程7-OpenFeign实战开发和参数调优

    2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 教程全目录「含视频」:https://gitee.c ...

  4. php-fpm参数调优

    关于php-fpm.conf参数调优,只对重要的参数进程调优.其它可参数前辈的. http://php.net/manual/zh/install.fpm.configuration.php (官方的 ...

  5. nginx+keepalived+tomcat之tomcat性能调优

    body{ font-family: Nyala; font-size: 10.5pt; line-height: 1.5;}html, body{ color: ; background-color ...

  6. linux 服务器安全加固和内核参数调优 nf_conntrack

    0.内部设置跳板机,服务器只能通过跳板机登录1.禁止ROOT用户远程登录和登录端口 禁止ROOT用户远程登录 .打开 /etc/ssh/sshd_config PermitRootLogin no . ...

  7. Hbase记录-client访问zookeeper大量断开以及参数调优分析(转载)

    1.hbase client配置参数 超时时间.重试次数.重试时间间隔的配置也比较重要,因为默认的配置的值都较大,如果出现hbase集群或者RegionServer以及ZK关掉,则对应用程序是灾难性的 ...

  8. JBOSS参数调优

        阅读目录 JBOSS参数调优 jvm调优讲解1 JVM调优讲解2 JVM常见配置汇总 JBOSS生产环境下JVM调优 JBOSS瘦身 JBoss性能优化:内存紧张的问题终于解决了(转载)--- ...

  9. (转)linux IO 内核参数调优 之 参数调节和场景分析

    1. pdflush刷新脏数据条件 (linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数. 总结可知cached中的脏数据满足如下几个条件中一个或者多个的时 ...

随机推荐

  1. 题解 P1478 【陶陶摘苹果(升级版)】

    看着你们累死累活得快排.冒泡.结构体特殊冒泡.还有dp... 蒟蒻表示真的不用那么麻烦! 难度:新手村+1 压行情况:0 理解难度:0 首先我们来了解一下优先队列:(自己抄的自己...) 讲元素一个个 ...

  2. 题解 P1469 【找筷子】

    这题真是水 咳咳.. 基本思路:桶排 但是可以剪枝. 剪枝方法: 好几种,可以用set(集合),可以用stack(栈), 也可以像我一样的蒟蒻最大最小值...... 但是作者的毒瘤数据应该不会放过我们 ...

  3. ubuntu成功安装搜狗输入法

    在安装之前,我们要先了解一个事实,那就是linux下安装软件和Windows是非常不同的,并不是简单地双击安装包就可以安装了.linux很多软件都有自己的一个依赖源,如果不先安装好这些依赖源,你是无法 ...

  4. WPF 如何加载图片

    Uri ri = new Uri(AppDomain.CurrentDomain.BaseDirectory + "Resources/exp.jpg"); ImageSource ...

  5. 【题解】NOIP2017时间复杂度

    对大模拟抱有深深的恐惧……不过这次写好像还好?拿个栈维护一下循环的嵌套,然后重定义一下读入即可.记得去年在考场上面死活调不粗来,代码也奇丑无比……希望今年能好一点吧! #include <bit ...

  6. elasticsearch 第一篇(入门篇)

    介绍 elasticsearch是一个高效的.可扩展的全文搜索引擎 基本概念 Near Realtime(NRT): es是一个接近实时查询平台,意味从存储一条数据到可以索引到数据时差很小,通常在1s ...

  7. HDU1402:A * B Problem Plus——题解

    http://acm.hdu.edu.cn/showproblem.php?pid=1402 给出两个高精度正整数,求它们的积,最长的数长度不大于5e4. FFT裸题,将每个数位看做是多项式的系数即可 ...

  8. 51nod 1952 栈(单调队列)

    用deque实时维护栈的情况. 数加入栈顶部,删掉栈顶部的数,相当于加入一个数,删掉最早出现的数,每次求最大值,这个直接记录一下就好了. 数加入栈底部,删掉栈顶部的数,相当于加入一个数,删掉最晚出现的 ...

  9. 【HEOI 2018】制胡窜

    转载请注明出处:http://www.cnblogs.com/TSHugh/p/8779709.html YJQ的题解把思路介绍得很明白,只不过有些细节说得还是太笼统了(不过正经的题解就应该这个样子吧 ...

  10. Linux之执行命令操作20170330

    介绍一下Linux系统中的代码执行shell等命令的几种操作方式: 一.标准流管道popen 该函数的原型是FILE * popen(const char* command, const char * ...