阿里雲新centos7.4系統安裝https,通過openssl重新編譯nginx
按照阿里雲官方的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
執行wgethttp://nginx.org/download/nginx-1.7.0.tar.gz
下載 Nginx
執行tar-zxvf nginx-1.7.0.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(由於系統環境差異路徑可能不一致,下同),注意新增
./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;
}