目录
一、案例概述
在企业信息化应用环境中,服务器的安全性和响应速度需要根据实际情况进行相应参数
配置,以达到最优的用户体验。
默认的Nginx安装参数只能提供最基本的服务,需要调整如网页缓存时间、连接超时、
网页压缩等相应参数,发挥出服务器的最大作用
二、Nginx介绍
2.1 Nginx工作原理
●Nginx由内核和模块组成。Nginx本身做的工作实际很少,当它接到一个HTTP请求时,
它仅仅是通过查找配置文件将此次请求映射到一个location block,而此location中所配置
的各个指令则会启动不同的模块去完成工作,因此模块可以看做Nginx真正的劳动工作者。
#通常一个location中的指令会涉及一个handler模块和多个filter模块(当然,多个location
可以复用同一个模块)。handler模块负责处理请求,完成响应内容的生成,而filter模块对
响应内容进行处理。
●用户根据自己的需要所开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx的功能才会如此强大
Nginx的模块从结构上分为核心模块、基础模块和第三方模块:
#核心模块: HTTP模块、EVENT模块和MAIL模块;
#基础模块: HTTP Access模块、HTTP FastCGl模块、HTTP Proxy模块和HTTP Rewrite模块;
#第三方模块: HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。
Nginx的模块从功能上分为如下三类:
Handlers(处理器模块):此类模块直接处理请求,并进行输出内容和修改headers
信息等操作。Handlers处理器模块一般只能有一个;
Filters(过滤器模块)∶此类模块主要对其他处理器模块输出的内容进行修改操作,
最后由 Nginx输出;
Proxies(代理类模块)∶此类模块是Nginx的HTTP Upstream之类的模块,这些
模块主要与后端一些服务比如FastCGl等进行交互,实现服务代理和负载均衡等
功能。
2.2 Nginx的进程模型
●在工作方式上,Nginx分为单工作进程和多工作进程两种模式
在单工作进程模式下,除主进程外,还有一个工作进程,工作进程是单线程的;
在多工作进程模式下,每个工作进程包含多个线程。
Nginx默认为单工作进程模式。
●Nginx在启动后,会有一个master进程和多个worker进程。
master进程主要用来管理worker进程,主要包含:接收来自外界的信号,向各worker
进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动
重新启动新的worker进程。
三、Nginx优化
3.1 隐藏版本号
●在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能
针对特定版本进行攻击。在隐藏前,可以使用fiddler工具抓取数据包,查看Nginx版本,
也可以在CentOS中使用命令curl -I http://IP/查看
●隐藏 Nginx版本号有两种方式:
第一种是修改Nginx源码文件,指定不显示版本号,
第二种是修改 Nginx的主配置文件
[root@localhost ~]# curl -I http://20.0.0.26
HTTP/1.1 200 OK
Server: nginx/1.15.9
Date: Tue, 08 Sep 2020 12:05:06 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Wed, 02 Sep 2020 11:24:11 GMT
Connection: keep-alive
ETag: "5f4f80db-264"
Accept-Ranges: bytes
Server: nginx/1.15.9 这里版本号可以看的到
1、修改配置文件方式
[root@localhost~]# vi /usr/local/nginx/conf/nginx.conf
###省略###
http {
includemime.types;
default_type application/octet-stream;
server_tokens off