编译的时候,需要增加 --with-http_ssl_module
若没有,需要重新编译。
注意1 :重新编译的时候,编译的路径不能变。比如之前编译的路径是在/usr/local/nginx,在重新编译的时候,也要是这个路径。
注意2 :重新编译的时候,会报错。本次遇上的错, ./configura不报错,make的时候报错了。 类似 make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error
需要修改nginx 的编译文件
解决方法 打开nginx源文件下的/usr/local/src/nginx-1.9.9/auto/lib/openssl/conf文件:
找到这么一段代码:
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
修改成以下代码:
CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
如此处理,又遇上找不到 libssl.a和libcrypto.a 文件
这次我是下载这个版本 openssl-1.0.2n.tar.gz
./config --prefix=./ no-shared no-zlib no-asm no-sse2no-compno-dso -DOPENSSL_THREADS -pthread -D_REENTRANT -D_THREAD_SAFE -D_THREADSAFE
(安装在当前目录,静态编译的形式,采用线程安全,如果要编译OpenSSL的动态库,只要把 no-shared 改成 shared 即可)
修改生成的Makefile文件,vi Makefile CC= arm-hisiv400-linux-gcc AR= arm-hisiv400-linux-ar $(ARFLAGS) r RANLIB= arm-hisiv400-linux-ranlib
make
编译完后,可以在该目录下搜索 libssl.a和libcrypto.a,已经能找到了
然后继续编译nginx,把这两个文件,放到编译报错里面找不到的那个路径下。
注意三 :nginx在做配置的时候,端口后面要加ssl。 看这个正确的这行: listen 443 ssl;
顺便要加这几行
ssl_certificate ssl/4549558_gmsdk.fjsanxia.com.pem;
ssl_certificate_key ssl/4549558_gmsdk.fjsanxia.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;