Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。
正向代理:比如访问国外某些网站,这时的做法是访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们。
正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清除来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。
反向代理:多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则发给了后端的业务处理服务器进行处理了。此时请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了。访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。
常用配置文件
- nginx.conf:应用程序基本配置文件
- mime.types:MIME类型关联的扩展文件
- fastcgi.conf:与fastcgi相关的配置
- proxy.conf:与proxy相关的配置
- sites.conf:配置Nginx提供的网站,包括虚拟机
模块划分
- 事件驱动events
worker_connections number
每个worker进程所能够打开的最大并发连接数数量
use method
指明并发连接请求的处理方法,默认自动选择最优方法不用调整
如:use epoll;
Accept_mutex on|off互斥;
处理新的连接请求方法;on指由各个worker轮流处理新请求,off指每个新请求的到达都会通知(唤醒)所有的worker进程,但只有一个进程可获得连接,造成“惊群”,影响性能,默认为on
- http核心模块
2.1 web服务模板
server{…} 配置一个虚拟主机
server{
(1)基于port
listen PORT;指令监听在不同的端口
(2)基于ip的虚拟主机
listen IP:PORT;IP地址不同
(3)基于hostname
Server_name fqdn;指令指向不同的主机名
}
2.2 套接字相关配置
listen address[:port] [default_server] [ssl] [http2 | spdy] [backlog=number] [rcvbuf=size] [sndbuf=size]
default_server设定为默认虚拟主机
ssl限制仅能够通过ssl连接提供服务
backlog=number超过并发连接数后,新请求进入后援队列的长度
rcvbuf=size接收缓冲区大小
sndbuf=size发送缓冲区大小
2.3 server_name
server_name name…;
支持*统配任意长度的任意字符
server_name *.magedu.com www.magedu.*
支持~起始的字符做正则表达式模式匹配,性能原因慎用
server_name ~^www\d+\.magedu\.com$ #\d 表示 [0-9]
匹配优先级机制从高到低:
(1) 首先是字符串精确匹配 如: www.magedu.com
(2) 左侧*通配符 如: *.magedu.com
(3) 右侧*通配符 如: www.magedu.*
(4) 正则表达式 如: ~^.*\.magedu\.com$
(5) default_server
2.4 延迟发送选项
tcp_nodelay on | off;
tcp_nopush on | off;
在keepalived模式下的连接是否启用TCP_NODELAY选项
当为off时,延迟发送,合并多个请求后再发送
默认on时,不延迟发送
可用于: http, server, location
2.5 隐藏版本信息
server_tokens on | off | build | string
是否在响应报文的Server首部显示nginx版本
2.6 location匹配
location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射; ngnix会根据
用户请求的URI来检查定义的所有location,并找出一个最佳匹配,而后应用其配置
示例:
server {...