前言
Nginx是由俄罗斯软件工程师Igor Sysoev开发的一个高性能的HTTP和反向代理服务器,具备IMAP/POP3和SMTP服务器功能。Nginx最大的特点是对高并发的支持和高效的负载均衡,在高并发的需求场景下,是Apache服务器不错的替代品。目前,包括新浪、腾讯等知名网站都已使用Nginx作为Web应用服务器。本文带来的是Nginx配置与应用详解。
基础特性
基本功能
静态资源的web服务器,能缓存打开的文件描述符
反向代理服务器,缓存、负载均衡
支持FastCGI
模块化,非DSO机制,过滤器gzip,SSI和图像大小调整等
支持SSL
扩展功能
基于名称和IP做虚拟主机
支持keepalive
支持平滑配置更新或程序版本升级
定制访问日志,支持使用日志缓存以提高性能
支持url rewrite
支持路径别名
支持基于IP及用户的认证
支持速率限制,并发限制等
基本架构
一个master, 生成一个或多个worker
事件驱动:kqueue, epoll, /dev/poll
消息通知:select, poll, rt signals
支持sendfile, sendfile64
文件AIO
支持mmap
模块类别
核心模块
标准http模块
可选的http模块
邮件模块
第三方扩展模块
基本配置
虚拟主机
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444474529085719.png)
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444513825936800.png)
虚拟主机基本配置完成,当然虚拟主机里也可以有很多参数的,下文会提及到
访问控制
基于用户
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444516269053978.png)
认证文件由htpasswd命令创建
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444536258217273.png)
访问测试
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444554814956481.jpg)
基于IP
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444571160101670.png)
重启服务后访问测试
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444587796568294.jpg)
压缩功能
nginx将响应报文发送至客户端之前可以启用压缩功能,这能够有效地节约带宽,并提高响应至客户
端的速度。通常编译nginx默认会附带gzip压缩的功能,因此,可以直接启用之。
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444626995676600.png)
未压缩访问测试
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444621894088565.jpg)
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444643143883552.png)
重启服务,压缩后测试
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444656777577594.jpg)
压缩成功
防盗链
(1) 定义合规的引用
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444676043483504.png)
(2) 拒绝不合规的引用
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444689526069563.png)
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444732980824830.png)
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444723591019224.png)
访问测试
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444740723252009.jpg)
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444760049449584.jpg)
反向代理
Nginx通过proxy模块实现反向代理功能。在作为web反向代理服务器时,nginx负责接收客户请求,并能够根据URI、客户端参数或其它的处理逻辑将用户请求调度至上游服务器上(upstream server)。
nginx在实现反向代理功能时的最重要指令为proxy_pass,它能够将location定义的某URI代理至指定的上游服务器(组)上。如下面的示例中,location的/uri将被替换为上游服务器上的/newuri。
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444777546901850.png)
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444818356295110.png)
缓存
nginx做为反向代理时,能够将来自上游服务器的响应缓存至本地,并在后续的客户端请求同样内容时
直接从本地构造响应报文。
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444825381234057.jpg)
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444844559924134.jpg)
缓存前请求时间
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444874147275649.jpg)
缓存后请求时间
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444894924294683.jpg)
此时缓存目录应该有缓存文件生成
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444910933091838.png)
负载均衡
nginx可利用自身的upstream模块实现,upstream模块的负载均衡算法主要有三种,轮调(round-robin)、ip哈希(ip_hash)和最少连接(least_conn)三种。
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444932032496697.jpg)
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444951743901006.png)
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444976142927739.png)
如此便可实现简单的负载均衡功能
The end
好了,有关nginx的基础配置及应用就先说到这里了,第一次接触nginx,写的比较乱,敬请谅解。
来源:http://www.178linux.com/5320
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112444997435105899.jpg)
![](http://www.870307.wang/wp-content/uploads/2018/08/2018080112445016773023319.gif)
点击“阅读原文”咨询课程