nginx
Nginx
Nginx是一款轻量级的Web服务器,也是一款轻量级的反向代理服务器
Nginx能干什么
直接支持Rails和PHP的程序
作为HTTP反向代理服务器
作为负载均衡服务器
作为邮件代理服务器
帮助实现前端动静分离
Nginx在应用程序中的作用
解决跨域
请求过滤
配置gzip
负载均衡
静态资源服务器
Nginx特点
高稳定、高性能、资源占用少、功能丰富、模块化结构、支持热部署
安装Nginx
环境搭建
自己找个电脑搭建
购买阿里云ECS
使用虚拟软件
安装依赖:
yum -y install gcc gcc-c++ pcre-devel autoconf make automakeyum -y install wget httpd-tools vim安装nginx
检查是否安装成功:
nginx -v
配置文件
基本使用
自定义错误页
访问控制
基于端口/IP/域名设置虚拟主机
PC或移动端适配
Gzip压缩
gzip : 该指令用于开启或 关闭gzip模块
gzip_buffers : 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流
gzip_comp_level : gzip压缩比,压缩级别是1-9,1的压缩级别最低,9的压缩级别最高。压缩级别越高压缩率越大,压缩时间越长
gzip_disable : 可以通过该指令对一些特定的User-Agent不使用压缩功能
gzip_min_length:设置允许压缩的页面最小字节数,页面字节数从相应消息头的Content-length中进行获取
gzip_http_version:识别HTTP协议版本,其值可以是1.1.或1.0
gzip_proxied : 用于设置启用或禁用从代理服务器上收到相应内容gzip压缩
gzip_vary : 用于在响应消息头中添加Vary: Accept-Encoding,使代理服务器根据请求头中的Accept-Encoding识别是否启用gzip压缩
正向代理

内网服务器主动去请求外网的服务的一种行为(梯子)
这样就可以做到内网中端口为8080的服务器主动请求到1.2.3.4的主机上,如在Linux下可以:
curl --proxy proxy_server:8080 http://www.taobao.com/
正向代理的关键配置:
1 resolver: DNS服务器IP地址
2 listen:主动发起请求的内网服务器端口
3 proxy_pass:代理服务器的协议和地址
反向代理
是指用代理服务器来接受客户端发来的请求,然后将请求转发给内网中的上游服务器,上游服务器处理完之后,把结果通过nginx返回给客户端

proxy_set_header :在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息
proxy_connect_timeout:配置Nginx与后端代理服务器尝试建立连接的超时时间
proxy_read_timeout : 配置Nginx向后端服务器组发出read请求后,等待相应的超时时间
proxy_send_timeout:配置Nginx向后端服务器组发出write请求后,等待相应的超时时间
proxy_redirect :用于修改后端服务器返回的响应头中的Location和Refresh
反向代理的关键配置:
1 server_name:代表客户端向服务器发起请求时输入的域名
2 proxy_pass:代表源服务器的访问地址,也就是真正处理请求的服务器
透明代理也叫做简单代理,意思客户端向服务端发起请求时,请求会先到达透明代理服务器,代理服务器再把请求转交给真实的源服务器处理,也就是是客户端根本不知道有代理服务器的存在。
负载均衡
将服务器接收到的请求按照规则分发的过程,称为负载均衡。负载均衡是反向代理的一种体现。
nginx实现负载均衡有几种模式:
轮询:每个请求按时间顺序逐一分配到不同的后端服务器,也是nginx的默认模式。轮询模式的配置很简单,只需要把服务器列表加入到upstream模块中即可。
下面的配置是指:负载中有三台服务器,当请求到达时,nginx按照时间顺序把请求分配给三台服务器处理。
ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。
下面的配置是指:负载中有三台服务器,当请求到达时,nginx优先按照ip_hash的结果进行分配,也就是同一个IP的请求固定在某一台服务器上,其它则按时间顺序把请求分配给三台服务器处理。
url_hash:按访问url的hash结果来分配请求,相同的url固定转发到同一个后端服务器处理。
fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
而在每一种模式中,每一台服务器后面的可以携带的参数有:
down: 当前服务器暂不参与负载
weight: 权重,值越大,服务器的负载量越大。
max_fails:允许请求失败的次数,默认为1。
fail_timeout:max_fails次失败后暂停的时间。
backup:备份机, 只有其它所有的非backup机器down或者忙时才会请求backup机器。
如下面的配置是指:负载中有三台服务器,当请求到达时,nginx按时间顺序和权重把请求分配给三台服务器处理,例如有100个请求,有30%是服务器4处理,有50%的请求是服务器5处理,有20%的请求是服务器6处理。
如下面的配置是指:负载中有三台服务器,服务器4的失败超时时间为60s,服务器5暂不参与负载,服务器6只用作备份机。
下面是一个配置负载均衡的示例(只写了关键配置): 其中: 1. upstream serverList是负载的配置模块 2. server_name是客户端请求的域名地址 3. proxy_pass是指向负载的列表的模块
静态服务器
现在很多项目流行前后分离,也就是前端服务器和后端服务器分离,分别部署,这样的方式能让前后端人员能各司其职,不需要互相依赖,而前后分离中,前端项目的运行是不需要用Tomcat、Apache等服务器环境的,因此可以直接用nginx来作为静态服务器。
静态服务器的关键配置:
root:直接静态项目的绝对路径的根目录。
server_name : 静态网站访问的域名地址
Last updated