背景:有环境,Nginx要启用https测试,结果提示缺失http_ssl_module。

我:咦???这标配的模块竟然会缺?一问才知,Nginx是运维编译的。

虽然我内心想不明白一共没啥特殊功能的标准服务自己编译有啥益处,但专业的人做事一定有原因,就这么认为吧。

问题来了,得浩哥令,对驻地提供协助。那增补编译的事儿就只能我来做了。随手整理流程如:

  1. 安装所需程序,并尝试定位编译源码的路径(希望运维没有删)

    yum install openssl-devel mlocate -y
    updatedb
    locate nginx.conf

    输出结果:

    /etc/nginx/nginx.conf
    /etc/nginx/nginx.conf.default
    /root/nginx-1.14.1/conf/nginx.conf
    /root/nginx-1.22.0/conf/nginx.conf
    /root/nginx-1.8.0/conf/nginx.conf

    还不错,源码还在。

  2. 核对nginx版本并查找旧的编译参数并增补新的编译参数。

    nginx -V

    输出:

    nginx version: nginx/1.14.1
    built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
    configure arguments: --user=nginx --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --with-http_stub_status_module
  3. 现在我们知道版本是nginx-1.14.1了,也得到了编译的参数,那么进入源码目录用增补后的编译参数重新编译nginx:

    cd /root/nginx-1.14.1/
    configure --user=nginx --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --with-http_stub_status_module --with-http_ssl_module
  4. 编译无报错,安装。


    make
    make install
  5. 调整好nginx.conf关于443和https的配置后重启服务。

    /etc/init.d/nginx restart
  6. 其他小坑,因为这个服务要给上古的盒子使用,上古的盒子https的协议要求为SSLv2,所以用旧的才行,ssl_ciphers 兼容新的可能还需要按实际情况扩充:

    ssl_protocols SSLv2 TLSv1.2 TLSv1.3;
    ssl_ciphers ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

参考资料

Configuring HTTPS servers


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《Nginx如何增补编译http_ssl_module》相关的博文:


留言

avatar
😀
😀😁😂😅😭🤭😋😘🤔😰😱🤪💪👍👎🤝🌹👌