军哥 LNMP 添加 http_realip_module 与 stream_ssl_preread_module 模块(完整步骤)

0
17

适用场景:使用 LNMP 一键包(军哥版)搭建网站后,若需要在 Nginx 中获取真实 IP(Real IP)或进行 TCP/SSL 分流(如四层负载均衡、SNI 预读),则需手动启用 http_realip_modulestream_ssl_preread_module 模块。


一、模块简介

  • http_realip_module:用于获取客户端真实 IP 地址(如反向代理或 CDN 场景),可通过 set_real_ip_fromreal_ip_header 指令实现。
  • stream_ssl_preread_module:支持 Nginx 在未解密 TLS 数据的情况下读取 SNI 主机名,实现基于域名的 SSL 分流,非常适合多域名共用 443 端口的场景。

默认 LNMP 的 Nginx 未编译这些模块,因此需要通过 upgrade.sh 重新编译添加。


二、进入 LNMP 安装目录

在 SSH 终端执行以下命令进入 LNMP 安装路径(默认为 /root/lnmp):

cd /root/lnmp

若你在安装时指定了自定义路径,请进入对应目录。


三、编辑配置文件 lnmp.conf

vinano 打开配置文件:

vi lnmp.conf

找到以下两行:

Nginx_Modules_Options=''
PHP_Modules_Options=''

修改为(增加两个模块):

Nginx_Modules_Options='--with-http_realip_module --with-stream_ssl_preread_module'
PHP_Modules_Options=''

保存退出(在 vi 中按 Esc → 输入 :wq → 回车)。


四、执行升级命令

在 LNMP 目录下运行升级脚本以重新编译 Nginx:

./upgrade.sh nginx

升级过程会自动下载源码、重新编译 Nginx 并保留原有配置。

注意事项:

  • 升级前可执行 nginx -V 查看当前编译参数。
  • 若系统提示 “nginx: command not found”,请确认 LNMP 安装路径是否正确。
  • 升级过程需联网,请确保服务器能正常访问 nginx.org

五、验证模块是否启用成功

执行以下命令查看 Nginx 编译模块列表:

nginx -V 2>&1 | grep module

若输出中包含以下两项,则表示模块已启用:

--with-http_realip_module
--with-stream_ssl_preread_module

六、应用示例

1️⃣ http_realip_module 示例

用于获取反向代理后的真实 IP:

set_real_ip_from  127.0.0.1;
set_real_ip_from  192.168.0.0/16;
real_ip_header    X-Forwarded-For;
real_ip_recursive on;

2️⃣ stream_ssl_preread_module 示例

基于 SNI 分流不同域名到不同后端:

stream {
    map $ssl_preread_server_name $backend {
        www.site1.com backend1;
        www.site2.com backend2;
        default backend_default;
    }

    upstream backend1 { server 127.0.0.1:8443; }
    upstream backend2 { server 127.0.0.1:9443; }

    server {
        listen 443;
        ssl_preread on;
        proxy_pass $backend;
    }
}

此功能常用于多域名共用 443 端口的多站点部署。


七、常见问题与解决办法

问题原因解决办法
upgrade.sh: command not found未进入 LNMP 安装目录执行 cd /root/lnmp 后再运行
升级中断或失败网络异常 / 源码下载失败确认网络正常,重试 ./upgrade.sh nginx
网站无法启动Nginx 配置语法错误或模块冲突运行 nginx -t 检查语法后再重启

八、总结

  • http_realip_module:用于正确识别客户端 IP。
  • stream_ssl_preread_module:用于 TLS SNI 分流。
  • 只需修改 lnmp.conf 并运行 ./upgrade.sh nginx 即可启用。

提示:在执行升级前,建议先备份网站配置与 Nginx 文件,避免异常升级导致中断。


延伸阅读


发布回复

请输入评论!
请输入你的名字