什么是Nginx
Nginx是用于Web服务,反向代理,缓存,负载平衡,媒体流等的开源软件。它最初是为最大性能和稳定性而设计的Web服务器。除了HTTP服务器的功能之外,Nginx还可以充当邮件的代理服务器(IMAP,POP3和SMTP)以及HTTP,TCP和UDP服务器的反向代理和负载平衡器。
Nginx中常见地一些功能:
- 具有缓存的反向代理
- IPv6
- 负载均衡
- 就具有缓存的Fast CGI支持
- Web套接字
- 处理静态文件,索引文件和自动索引
- 带有SNI的TLS/SSL
正向代理
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器获得内容,客户端向代理服发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回客户端,客户端才能使用正向代理。
反向代理
反向代理服务器位于用户于目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,及用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无需在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
反向代理的工作原理是,代理服务器来接受客户端的网络访问连接请求,然后服务器将请求有策略地转发给网络中实际工作的业务服务器,并将服务器处理的结果,返回给网络上发起请求的客户端。
Nginx作为Web服务器
Nginx的目标是创建最快的Web服务器,并且保持卓越性能仍然是该项目的中心目标。Nginx在衡量Web服务器性能的基准测试中始终击败Apache和其他服务器。但是,自Nginx最初发布以来,网站已从简单的HTML页面扩展到动态的,多方面的内容。Nginx随之发展,现在支持现代Web的所有组件,包括WebSocket,HTTP/2和多种视频格式(HDS,HLS,RTMP等)的流传输。
Nginx超越网络服务
尽管Nginx是以最快的Web服务器而闻名,但事实证明,可扩展的基础体系结构已成为除提供内容之外的许多Web任务的理想选择。由于Nginx可以处理大量连接,因此通常用作反向代理和负载平衡器,以管理传入流量并将其分配到速度较慢的上游服务器(从旧数据库服务器到微服务)。
Nginx还经常放置在客户端和第二台Web服务器之间,用作SSL/TLS终结器或者Web加速器。作为中介,Nginx有效地处理了可能会使你的web服务器变慢的任务,例如协商SSL/TLS或压缩和缓存内容以提高性能。使用Node.js到PHP的任何内容构建的动态站点通常将Nginx部署为内容缓存和反向代理,以减少应用程序服务器上的负载并最有效地利用底层硬件。