按照阿里云官方的https安装教程在编译nginx时总是报错,研究了很久,发现它的安装方法可能并不适用于已经预装好openssl的系统,而教程中提供的openssl版本比较新,网上大部分方法并不适用,经过半天的折腾总结出如下方案:
1. 远程连接 并登录到 Linux 实例。
2. 运行 cd/usr/local
切换目录。
3. 运行以下命令安装PCRE 和zlib 库。
1. yum -y install pcre pcre-devel
2. yum install -y zlib-devel
前往 https://nginx.org/download/ 下载 Nginx。如示例中nginx-1.7.0.tar.gz 的下载地址为 http://nginx.org/download/nginx-1.7.0.tar.gz。
运行 wgethttp://nginx.org/download/nginx-1.7.0.tar.gz
下载 Nginx。
运行 tar-zxvf nginx-1.7.0.tar.gz
解压安装包。
前往 https://www.openssl.org/source 下载OpenSSL。如示例中openssl-1.0.1g.tar.gz 的下载地址为 https://www.openssl.org/source/openssl-1.0.1g.tar.gz。
运行 wgethttps://www.openssl.org/source/openssl-1.0.1g.tar.gz
下载OpenSSL。
运行 tar-xvzf openssl-1.0.1g.tar.gz
解压安装包。
新建文件夹mkdir /usr/local/ssl
移动openssl文件夹
mv /usr/local/openssl-1.0.1g /usr/local/ssl/openssl-1.0.1g
进入解压后的openssl文件夹 cd./ssl/openssl-1.0.1g/
执行文件夹中的config文件,这里openssl的安装目录默认是/usr/local/ssl(由于系统环境差异路径可能不一致,下同),注意添加zlib-dynamic参数,使其编译成动态库
./config shared zlib-dynamic
config完成后执行 make 命令make
make 命令执行完后再执行make install
命令,安装openssl make install
重命名原来的openssl命令mv /usr/bin/openssl /usr/bin/openssl.old
重命名原来的openssl目录mv /usr/include/openssl /usr/include/openssl.old
若没有此目录(阿里云centos7.4没有),省去此步骤。
将安装好的openssl的openssl命令软连到/usr/bin/openssl
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
将安装好的openssl的openssl目录软连到/usr/include/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
修改系统自带的openssl库文件,如/usr/local/lib64/libssl.so(根据机器环境而定) 软链到升级后的libssl.so
ln -s /usr/local/ssl/lib/libssl.so /usr/local/lib64/libssl.so
执行命令查看openssl依赖库版本是否为1.0.1g strings/usr/local/lib64/libssl.so |grep OpenSSL
在/etc/ld.so.conf文件中写入openssl库文件的搜索路径
echo"/usr/local/ssl/lib">> /etc/ld.so.conf
使修改后的/etc/ld.so.conf生效 ldconfig -v 此时查看openssl是否更新
openssl version
源码重新安装nginx,使用ssl静态编译:执行nginx的configure文件时,除了业务需要的参数外,需要指定ssl为静态编译,编译参数带上--with-openssl便表明为静态编译ssl
cd /usr/local/nginx-1.7.0
./configure --with-http_ssl_module--with-openssl=/usr/local/ssl/ openssl-1.0.1g
安装nginx make && make install
新建文件夹 /usr/local/nginx/conf/cert 将证书导入
修改 /usr/local/nginx/conf/nginx.conf 加入
server {
listen443;
server_name www.liuxuan.cc;
sslon;
ssl_certificate cert/5.pem;
ssl_certificate_key cert/5.key;
ssl_session_timeout5m;
ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocolsTLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_cipherson;
location/ {
proxy_intercept_errorson;
proxy_redirectoff;
proxy_set_headerHost $host;
proxy_set_headerX-Real-IP $remote_addr;
proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;
proxy_passhttp://127.0.0.1:8082;
}
error_page 500 502 503 504 /defined50x.html;
location= /defined50x.html {
root /usr/local/nginx/html;
}
access_log/usr/local/nginx/logs/mswx_access.log;
}