nginx平滑升級添加ssl實現站內https

jopen 8年前發布 | 41K 次閱讀 Nginx SSL協議 Web服務器 HTTPS

操作目錄在root的home下,/home

/mt/server/nginx/sbin/nginx 這是x云默認 nginx 路徑

下載nginx1.8 stable

wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar zxvf nginx-1.8.0.tar.gz 
cd nginx-1.8.0

下載openssl

wget http://www.openssl.org/source/openssl-1.0.0d.tar.gz
tar zxvf openssl-1.0.0d.tar.gz

nginx -V 查看目前nginx編譯選項,然后在新版本nginx下 執行,注意添加

--with-openssl=/home/nginx-1.8.0/openssl-1.0.0d 選項

./configure --user=www --group=www --prefix=/mt/server/nginx --with-http_stub_status_module --with-openssl=/home/nginx-1.8.0/openssl-1.0.0d --without-http-cache --with-http_ssl_module --with-http_gzip_static_module --with-...

編譯,不要不要不要makeinstall

make

之后會看在當前目錄生成objs文件,執行

./objs/nginx -V

nginx version: nginx/1.8.0
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-55)
built with OpenSSL 1.0.0d 8 Feb 2011
TLS SNI support enabled

發現 TLS SNI support enabled 這我們可以放心用了,這可以實現一個ip多個站點。

但是

nginx -v 這時候還是老版本的nginx,下面我們需要做的比較關鍵

我們需要先備份

mv /mt/server/nginx/sbin/nginx /mt/server/nginx/sbin/nginx.old

然后轉移

cp ./objs/nginx /mt/server/nginx/sbin/nginx

測試下

/mt/server/nginx/sbin/nginx -t

ok,執行更新

make upgrade

然后的最后

nginx -V
nginx version: nginx/1.8.0
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-55)
built with OpenSSL 1.0.0d 8 Feb 2011...

到此就成功了升級了 nginx 并且添加了 TLS SNI support 。

最后的步驟就是接 申請證書 ,配置nginx文件就好。

申請完證書,會有對應的web服務器的配置參考。這里簡單貼下

server {
 listen 443 ssl;
 ssl on;
 server_name www.maipingzheng.com;
 root /mt/www/mycnart1.2.0.1/;
 index index.php;
 ssl_certificate /mt/server/nginx1.2.5/conf/ssl/1_www.maipingzheng.com_bundle.crt;
 ssl_certificate_key /mt/server/nginx1.2.5/conf/ssl/2_www.maipingzheng.com.key;
 ssl_session_timeout 5m;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_ciphers ALL:xxxxxxxxxxxxGH:+MEDIUM:+LOxxxxXP;
 ssl_prefer_server_ciphers on;

}

解決http二級域名跳轉https,解決http根域名跳轉https

server {
 listen 80;
 server_name maipingzheng.com;
 if ($host != 'www.maipingzheng.com') {
 rewrite ^/(.*)$ https://www.maipingzheng.com/$1 permanent;
 }
}

全站跳轉https

server {
 listen 80;
 server_name www.maipingzheng.com;
 rewrite ^/(.*)$ https://www.maipingzheng.com/$1 permanent;
}

ok,收工。

*注意:如果想完全實現全站https,你的全站鏈接都得是https的,否則綠鎖會不顯示。

至于如何平衡,就看具體需求了,一般都是注冊登錄支付購買。

獲取采取js等其他措施實現。*

參考鏈接

來自: http://segmentfault.com/a/1190000004232801

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!