查看: 4  |  回复: 0
  检查 Nginx for Linux 是否安装了UDP模块
楼主
发表于 今天 18:07

用户可能是在配置Nginx的流模块(stream module),用于TCP/UDP负载均衡,或者使用SSL_preread模块进行SNI处理。这两个模块在编译时需要显式启用,默认可能不包含。所以用户需要确认自己的Nginx版本是否支持这些模块。

nginx -V

可能得到:

nginx version: nginx/1.28.3
built by gcc 14.2.0 (Debian 14.2.0-19) 
built with OpenSSL 1.1.1w  11 Sep 2023
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit
 --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=
 /www/server/nginx/src/nginx-sticky-module-ng-1.3.0 --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 
 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module 
 --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 
 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module 
 --add-module=/www/server/nginx/src/ngx_http_substitutions_filter_module-master --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error 
 --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --with-http_v3_module

比如,--with-stream启用TCP/UDP代理支持,--with-stream_ssl_preread_module允许在SSL握手前读取信息(如SNI),用于路由决策。

方法一:通过版本信息查询

# 查看Nginx编译参数

nginx -V 2>&1 | tr ' ' '\n' | grep -E 'with-stream|ssl_preread'

# 示例输出:
--with-stream
--with-stream_ssl_preread_module

结果解读:

同时出现两个参数 → 已完整包含

只有--with-stream → 缺少SSL预读功能

无相关输出 → 未编译stream模块

方法二:运行时模块验证

# 检查已加载模块

# 检查已加载模块
nginx -V 2>&1 | grep -E 'stream_module|ssl_preread_module'

# 有效输出应包含:
http_ssl_preread_module
stream_module

方法三:动态模块检测(适用于模块化安装)

# 检查模块目录
ls /usr/lib/nginx/modules/ | grep -E 'ngx_stream_module|ngx_stream_ssl_preread_module'

# 若存在则手动加载:
load_module modules/ngx_stream_module.so;
load_module modules/ngx_stream_ssl_preread_module.so;

常见场景解决方案

--with-stream    启用TCP/UDP代理功能,实现四层负载均衡    

--with-stream_ssl_preread_module    允许在SSL握手前读取ClientHello信息,用于SNI路由决策    

验证配置文件

# 添加测试配置
stream {
    server {
            listen 12345;
            ssl_preread on;
            proxy_pass $upstream;
   }
}

# 执行测试
nginx -t  # 若无报错则说明模块生效

通过上述方法可准确验证Nginx是否包含所需stream模块。若需要启用新模块,建议使用官方二进制包或从源码重新编译。


您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2026 MaNongKu.com