博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Nginx] – 基础安全优化 【一】
阅读量:6195 次
发布时间:2019-06-21

本文共 3870 字,大约阅读时间需要 12 分钟。

Nginx基础安全

[Nginx] – 基础安全优化 【一】

1,Nginx版本号信息隐藏

所有软件都在更新迭代,但是线上环境最主要的还是稳定,所以我们不会盲目最新,更愿意选择一个持续维护的稳定版,但没个版本都会有漏洞,如果不更新软件,又让***知道了我们使用的版本,就等于把我们的漏洞,都告诉给他们了,这样非常危险。 故此,要修改Nginx的版本信息,或隐藏,给敌人一种假象;
[root@web02 ~]# vim /application/nginx/conf/nginx.confhttp{    server_tokens off;}#我们在http标签端开启即可

没修改之前

[root@localhost home]# curl -I www.etiantian.orgHTTP/1.1 200 OKServer: 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.orgHTTP/1.1 200 OKServer: 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-aliveVary: Accept-EncodingETag: "5aa789f9-add"Accept-Ranges: bytes

修改为后浏览器访问404界面也不会出现版本信息

[Nginx] – 基础安全优化 【一】

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    #此行意思是不配置该参数,软件默认情况为1context:    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有什么区别?

宿管大妈的例子
具体配置如下:

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] – 基础安全优化 【一】

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资料:

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;

[Nginx] – 基础安全优化 【一】

上面涉及的2个模块地址

转载于:https://blog.51cto.com/qiuyt/2087714

你可能感兴趣的文章
微信支付申请90%的商户都卡在这儿了,申请微信支付,商户功能设置详细说明...
查看>>
9.7、Libgdx之振动器
查看>>
MVP应用架构模式
查看>>
jsp九大内置对象
查看>>
jedis 集群配置
查看>>
CentOS7 关闭防火墙
查看>>
Nfsen基于CentOS的部署
查看>>
smarty模版配置
查看>>
Android应用程序组件Content Provider应用实例(3)
查看>>
zabbix 监控redis sentinel
查看>>
Python 2.5.9 filter
查看>>
马哥6-3
查看>>
制作一款微信表情
查看>>
高仿Instagram 页面效果android特效
查看>>
Microsoft Dynamics CRM 4.0 Upgrade to Microsoft Dynamics CRM 2011方法总结
查看>>
线程的共享资源和私有资源
查看>>
三大电商的愿景 京东最为彷徨
查看>>
jsonp跨域访问+AES,RSA加密
查看>>
数据库事务的四大特性以及事务的隔离级别
查看>>
跨平台数据库管理工具valentina studio
查看>>