开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情
Nginx入门
Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端
什么是Nginx
高性能的HTTP和反向代理服务器
是一个 IMAP/POP3/SMTP 代理服务器
是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端
Apache和Nginx的区别
- Nginx
- 轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源
- 抗并发,nginx 以 epoll and kqueue 作为开发模型,处理请求是异步非阻塞的,负载能力比 apache 高很多,而 apache 则是阻塞型的
- nginx 能保持低资源低消耗高性能 ,而 apache 在 PHP 处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象.
- nginx 处理静态文件好,静态处理性能比 apache 高三倍以上
- nginx 的设计高度模块化,编写模块相对简单
- nginx 配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,apache 配置复杂
- nginx 作为负载均衡服务器,支持 7 层负载均衡
- nginx 本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器
- 启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级
- 社区活跃,各种高性能模块出品迅速
- Apache
- apache 的 rewrite 比 nginx 强大,在 rewrite 频繁的情况下,用 apache
- apache 发展到现在,模块超多,基本想到的都可以找到
- apache 更为成熟,少 bug ,nginx 的 bug 相对较多
- apache 超稳定
- apache 对 PHP 支持比较简单,nginx 需要配合其他后端用
- apache 在处理动态请求有优势,nginx 在这方面是鸡肋,一般动态请求要 apache 去做,nginx 适合静态和反向.
- apache 仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区
- 总结
- 两者最核心的区别在于 apache 是同步多进程模型,一个连接对应一个进程,而 nginx 是异步的,多个连接(万级别)可以对应一个进程
- 需要性能的 web 服务,用 nginx .如果不需要性能只求稳定,更考虑 apache
基础功能服务
- 基础HTTP服务
- 可以作为HTTP代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤,支持SSL等.
- 处理静态文件: 处理索引文件以及支持自动索引.
- 打开并自行管理文件描述符缓存.
- 提供反向代理,并且可以使用缓存加速反向代理,同时完成简单负载均衡以及容错.
- 提供远程FastCGI服务的缓存机制,加速访问,同时完成简单的负载均衡以及容错.
- 使用Nginx的模块化特性提供过滤功能.
- 支持HTTP下的安全套接层安全协议SSL
- 高级HTTP服务
- 可以进行自定义配置,支持虚拟主机,支持URL重定向,支持网络监控,支持流媒体传输等.
- 基于域名和IP以及基于端口的虚拟主机 .
- 支持HTTP/1.0中的KEEP-Alive模式和管线模型连接.
- 支持重新加载配置以及在线升级时,无需中断正在处理的请求.
- 自定义访问日志格式,带缓存的日志写操作以及快速日志轮转.
- 提供3xx-5xx错误代码重定向功能.
- 支持重写模块扩展.
- 支持HTTP DAV模块.
- 支持FLV流和MP4流传输.
- 支持网络监控.
- 支持嵌入Perl语言.
- 邮件代理服务
- 支持IMAP/POP3代理服务功能,支持内部SMTP代理服务功能.
- 支持使用外部HTTP认证服务器重定向用户到IMAP/POP3后端,并支持2者认证方式.
- 支持外部HTTP认证服务器认证用户后重定向连接内部SMTP后端,并支持SMTP认证方式.
- 支持邮件代理服务下的安全套接层安全协议SSL.
- 支持纯文本通信协议的扩展协议STARTTLS.
常用功能
- HTTP代理和反向代理
- Nginx 服务器转发前端请求性能稳定,并且后端转发与业务配置相互分离,配置灵活
- 支持判断表达式.通过使用正则表达式进行相关配置,可以实现根据不同的表达式采取不同的转发策略
- 能对后端返回情况进行异常判断,如果返回结果不正常,则重新请求另一台主机,并自动剔除返回异常的主机
- 支持错误页面跳转
- 负载均衡
- 将单一的重负载分担到多个网络节点上做并行处理,每个节点处理结束后将结果汇总返回给用户,提高网络系统的处理能力
- 将大量的前端并发访问或数据流量分担到多个后端网络节点上分别处理,减少前端用户等待响应的时间
- Web缓存
- Proxy_Cache
- 在Nginx 服务器提供反向代理的时候,对后端源服务器的返回内容进行URL缓存
- FastCGI_Cache
- 对FastCGI的动态程序进行缓存
- Proxy_Cache