Nginx_易混淆的术语
[nginx] 几个易混淆的术语
既没有能力也没有洁癖去考古整个 nginx 相关的历史进程, 只是简单的解释几个易混淆的术语, 提高相关同学的日常使用体验.
nginx
在 Google 中搜索 nginx 相关的内容时, 会高频的遇到两个网站: nginx.org 和 nginx.com.
nginx.org 对应开源版本的 nginx, nginx.com 对应商业版本的 nginx plus. 两者在功能和配置上显然并不完全等价, 查询相关特性和配置时需要根据自己使用的版本的多加注意.
大部分情况下, 我们使用的都是开源版本 nginx.
ingress
我是在 kubernetes(k8s) 中频繁的接触 ingress 这个概念的. ingress 在 k8s 中用于管理外部对集群服务的访问, 是抽象的规则, 需要具体的 ingress controller 来监听这些规则并完成实际的工作.
nginx 显然是 ingress controller 的非常主流的选择. nginx 和 nginx plus 都可以做为 [ingress controller], 官方实现在 nginxinc/kubernetes-ingress, 文档可以参考 nginx-ingress-controller. 还是那句话, 注意区分那些只在 [nginx plus] 提供的功能和配置.
但是, 我们在 k8s 中使用的 nginx ingress controller 大部分时候不是上述的实现, 惊不惊喜, 意不意外. k8s 自己基于 nginx 实现了一个 ingress-controller, 即 kubernetes/ingress-nginx.
如果想要区分当前的部署使用的是上述三者的哪一种, 比较好的方法是观察 image:
- [nginxinc/kubernetes-ingress] 对应的是 nginx/nginx-ingress 和 nginx-plus-ingress
- [kubenetes/ingress-nginx] 对应的是 ingress-nginx/controller
openresty
openresty 是由 agentzh 维护的, 基于 nginx 和 LuaJIT 的反向代理和负载均衡. 我粗浅的理解就是, 古早之前, agentzh 为 nginx 加入 LuaJIT 和大量三方库后, 为了快速响应一些性能和质量问题而维护的一个 nginx 版本.
当然, nginx 也在很早之前支持了 lua 做为动态脚本.