nginx在国产服务器上stream配置项无法识别的问题

最近在搭建k8s+ranchar,需要用到nginx做负载均衡,之前在系统中也会用到,之前一直使用http选项,做转发配置。

基本格式如下图所示:

图片

但是在ranchar的安装中默认方式使用stream配置项。

图片

使用yum默认安装的nginx不支持该关键字。

默认使用的版本是1.23.0,后来查了资料,可能是版本太高了,于是降低了版本,发现还是不支持,于是从官网下载源码包。

官网地址:https://nginx.org/en/download.html

使用需要进行配置、编译、安装,在配置过程中添加上对stream选项的支持即可。

# 添加使用--with-stream=dynamic 配置./configure --prefix=/usr/local/nginx/ --with-stream=dynamic# 然后make  make# 然后make  installmake install

安装之后,nginx就会被安装在/usr/local/nginx/路径下,测试可以进入/usr/local/nginx/conf路径下,使用stream的配置选项了

Nginx 的stream与http对比

问题是解决了,但是为什么要有两个类型的配置项?他们有什么区别呢?

Stream模块用于处理TCP、UDP和TLS协议,可以用来代理和负载均衡各种不同类型的流量。它能够支持代理和负载均衡TCP流量,例如SMTP、MySQL和Redis等。NGINX Stream模块支持按需加载,并提供配置选项来控制代理和负载均衡流量的行为。

HTTP模块则是用于处理HTTP请求和响应的模块。它作为一个反向代理,可以实现HTTP服务器上的负载均衡和缓存功能。HTTP模块还支持SSL/TLS终止、请求转发以及访问控制等功能。NGINX HTTP模块支持HTTP 1.0、HTTP 1.1和HTTP/2协议,并提供许多配置选项来调整HTTP交互的行为。

因此,NGINX Stream和HTTP之间的主要区别在于它们处理的协议和使用的功能不同。Stream模块适用于TCP、UDP和TLS流量的代理和负载均衡,而HTTP模块则专注于处理HTTP请求和响应。

而且我还做了实验,使用http模式来配置,nginx确实能启动,但是却不能在浏览器上打开rancher的页面,换成stream版本的就可以顺利打开~

结束~