作为编程小学生,学习一下新接触的技术。

简述

Nginx(发音为:安紧腻克死)是一套产品的统称,它最基础的产品就是它的服务器(Web server),它的其他产品感觉都是基于这个产品衍生出来的。

竞品

它的竞品是 IIS, Apache HTTP Server。 我没关注过Apache的这款,但接触过IIS,它在微软的生态圈(Windows, C#, .Net)内用起来很方便。性能我没比较过,听说大部分基础功能Nginx是比Apache快的。

Flask 或者Django自带的服务器还不能入它的法眼,因为他们都太简单,只能用来过家家或者做测试,离商用还太遥远。Flask自己的网站也是这么告诉用户的

特点

那什么才叫不简单的,可商用的网页服务器呢?我举几个特点。

  1. 比如支持大规模的部署,可以允许好多台机器使用好多的计算资源(缓存,CPU等)处理大量的请求。
  2. 还比如有一些商业上常用的功能,比如身份验证(Authentication),数据监测(Monitoring), 流量管理(Traffic management),负载均衡(Load Balancing)之类的。
  3. 另外就是支持插件,开发者和使用者可以在它的基础上做自己想要的功能。

实践

那如果要建一个用Django写的网站怎么办呢?用Nginx的话,解决方法就是在Nginx和Django之间连上一个WSGI HTTP Server,比如用(Gunicorn)。这篇文章写的很好,也给了例子和代码。

外面的世界 <-> Nginx <-> Gunicorn <-> Django。

现实世界中,其中一个使用了Nginx的产品就是Kubernetes的Ingress了。

Ingress的作用就是一个服务器。Kubernetes自己有好几个功能都可以作为服务器建立后端与外界的链接,比如ClusterIP, NodePort, LoadBalancer,但都没Ingress好用。(参考:https://www.nginx.com/blog/kubernetes-networking-101/

Ingress其实就是在Nginx外套了一个壳。下面这个视频里讲了,我觉得讲非常通俗易懂,推荐。

lidemin 学习笔记

Leave a Reply

Your email address will not be published. Required fields are marked *