Nginx開啟TLS SNI support
之前因為想讓VPS上的多個站點都使用SSL加密,主要那些twitter api被牆怕了,還是加密好
但是看一個ip只能一個ssl證書,我不可能去多買幾個ip吧,畢竟只是自己想玩玩,不是那種必須的
但是既然想了就折騰下,後來查了下資料,可以multiple SSL sites on a single IP address
而Nginx如果開啟了TLS SNI support,就能支援多個SSL加密站點共同使用一個IP
方法也很簡單,首先先看看你現在的Nginx是否enable了這個功能
nginx的原始碼地址:/usr/local/src
/usr/local/nginx/sbin/nginx -V nginx: nginx version: nginx/1.1.0 nginx: TLS SNI support disable nginx: configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6
如果是TLS SNI support disable那你需要重新編譯下Nginx,如果enable了,你直接修改配置檔案就行 這裡的環境事先說明,這裡使用LNMP一鍵安裝包搭建的環境,其他方法的請自行檢視需要修改地方
方法很簡單,首先安裝OpenSSL,不過一般都裝好的,這裡忽略
下載openssl原始碼包
wget http://www.openssl.org/source/openssl-1.0.0d.tar.gz tar xvf openssl-1.0.0d.tar.gz
然後重新編譯Nginx,需要在Configuare裡多加一行引數,指明openssl的路徑
我的openssl解壓路徑和nginx的目錄在同級目錄下,如果你的不在請自行修改
./configure --user=www --group=www --prefix=/usr/local/nginx \ --with-http_stub_status_module \ --with-http_ssl_module \ --with-http_gzip_static_module \ --with-ipv6 \ --with-openssl=../../openssl-1.0.0d/ make mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old cp objs/nginx /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx -t make upgrade
然後我們看下Nginx版本資訊,確認下
/usr/local/nginx/sbin/nginx -V nginx: nginx version: nginx/1.1.0 nginx: TLS SNI support enabled nginx: configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-openssl=../../openssl-1.0.0d/
搞定,TLS SNI support enabled,接下來就是修改vhost的配置,加上SSL證書配置了
nginx的ssl配置方法這裡不寫了,有空單獨寫一篇文章說明