Nginx基础安全
1,Nginx版本号信息隐藏
所有软件都在更新迭代,但是线上环境最主要的还是稳定,所以我们不会盲目最新,更愿意选择一个持续维护的稳定版,但没个版本都会有漏洞,如果不更新软件,又让知道了我们使用的版本,就等于把我们的漏洞,都告诉给他们了,这样非常危险。
故此,要修改Nginx的版本信息,或隐藏,给敌人一种假象;
[root@web02 ~]# vim /application/nginx/conf/nginx.conf
http{
server_tokens off;
}
#我们在http标签端开启即可
没修改之前
[root@localhost home]# curl -I www.etiantian.org
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Fri, 16 Mar 2018 09:29:17 GMT
Content-Type: text/html
Content-Length: 2781
Last-Modified: Tue, 13 Mar 2018 08:21:13 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: "5aa789f9-add"
Accept-Ranges: byte
修改后结果(需要重启生效)
[root@localhost home]# curl -I www.etiantian.org
HTTP/1.1 200 OK
Server: nginx ##版本号消失
Date: Fri, 16 Mar 2018 09:26:19 GMT
Content-Type: text/html
Content-Length: 2781
Last-Modified: Tue, 13 Mar 2018 08:21:13 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: "5aa789f9-add"
Accept-Ranges: bytes
修改为后浏览器访问404界面也不会出现版本信息
2、nginx默认运行用户
有的时候我们都已root去运行nginx,当黑发利用nginx的漏洞而获取了root权限,这时就很麻烦了,所以在此之前我们就需要对nginx用户就行降权,使用普通用户
法·1::修改配置文件
user nginx nginx; ##写入配置文件
法2:直接在./configure 编译的时候定义
./configure --prefix=/application/nginx-1.6.3/ --user=www --group=www`
3、优化nginx服务器的worker进程数量
worker进程是工作的进程,它的数量也是nginx效率的主要因素之一,通过调整参数,来提高nginx的并发能力,worker进程受制于master进程管理;
参数说明:
有关worker_process参数的官方说明如下:
syntax: worker_processes number:#此行为参数语法,number为数量
default: worker_processes 1 #此行意思是不配置该参数,软件默认情况为1
context: main #此行为worker_processes参数可以放置的位置
worker_processes为定义worker进程数的数量,建议设置为CPU的核数或者cpu核数*2的进程数,具体情况要根据实际业务来进行选择。除了要和CPU核数的匹配外,和硬盘存储的数据以及系统的负载也会有关,设置为CPU的个数或核数是一个好的起始配置
4、优化绑定不同的Nginx进程到不同CPU上
默认nginx会对进程分配到各个不同cpu上,但如果这个CPU工作压力大,他就不会很只能的切换到其他CPU上去工作,所以我们这边手动的去指定
worker_processes 1;
worker_cpu_affinity 0001 0010 0100 1000; #4个代表4核心
#worker_cpu_affinity就是配置nginx进程CPU亲和力的参数,即把不同的进程分给不同的CPU处理。这里0001 0010 0100 1000是掩码,分别代表1、2、3、4核cpu核心,由于worker_processes进程数为4,因此上述配置会把每个进程分配一核CPU处理,默认情况下进程不会绑定任何CPU,参数位置为main段
5、Nginx事件处理模型优化
Nginx的连接处理机制在于不同的操作系统会采用不同的I/O模型,在Linux下,Nginx使用epoll的I/O多路复用模型,在Freebsd中使用kqueue的I/O多路复用模型,在Solaris中使用/dev/poll方式的I/O多路复用模型,在Windows使用的是icop,等待。
**要根据系统类型选择不同的事件处理模型,可供使用的选择的有“use **[kqueue|rtsig|epoll|/dev/poll|select|pokk]”。
Nginx epool和apache select有什么区别?
http://www.tuicool.com/articles/AzmiY3
宿管大妈的例子
具体配置如下:
events {
#events指令是设定Nginx的工作模式及连接数上限
use epoll
}
#use是个事件模块指定,用来指定Nginx的工作模式,Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作迷失,kqueue和epoll是高效工作模式,不同的是epoll用在Linux平台,而kqueue用在BSD系统中。对于Linux 2.6内核推荐使用epoll工作模式
根据Nginx的官方文档建议,也可以不指定事件处理模型,Nginx会自动选择最佳的事件处理模型服务。
6、fastcgi相关参数调优(配合PHP引擎动态服务)
fastcgi参数是配合nginx向后请求PHP动态引擎服务的相关参数
Nginx Fastcgi相关参数 | 说明 |
---|---|
fastcgi_connect_timeout | nginx与后端fastcig服务器连接超时时间,默认为60s,时间设备不要过大,否则跟进连接的多少会占用资源越多 |
fastcgi_send_timeout | nginx与fastcgi返回数据超时时间,即在规定时间内后端服务器必须传完所有数据,否则,nginx将断开这个链接,默认60S |
fastcgi_read_timeout | nginx从fastcgi读取相应超时时间,在建立成功后,nginx等待后端服务器的相应时间,nginx队列等待时间 |
fastcgi_buffer_size | 设置fastcgi设置缓冲区大小 |
fastcgi_buffers | 设定用来读取或冲去大小及缓冲区数量。默认值fastcgi_buffers 8 4 8k |
fastcgi_cache nginx | 开启fastcgi缓存功能,名字叫nginx,缓存可以降低负载,防止502,单也会有副作用,比如平凡更改,变更不及时等 |
fastcgi_cache_path | 缓存目录 |
fastcgi_cache_vaild | 跟进不同的返回头,进行缓存时间设定 |
fastcgi_cache_min_user | 设置请求几次之后将被缓存,例如fastcgi_cache_min_user 1;请求1次 就缓存 |
fastcgi cache资料:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache
7、PHP 优化设置:
在http{}里面
fastcgi_connect_timeout 240;
fastcgi_send_timeout 240;
fastcgi_read_timeout 240;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#fastcgi_temp_path /data/ngx_fcgi_tmp; 需要有路径
fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2 keys_zone=ngx_fcgi_cache:512m inactive=1d max_size=40g;
PHP缓存 可以配置在server标签和http标签
fastcgi_cache ngx_fcgi_cache;
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_cache_key http://$host$request_uri;
上面涉及的2个模块地址
http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffer_siz
http://nginx.org/en/docs/http/ngx_http_proxy_module.html
- QQ精品交流群
-
- 微信公众号
-
2018年10月30日 上午8:07 沙发
棒棒哒