1 概述
要利用nginx软件实现https的页面,要用到ngx_http_ssl_module模块,本文将介绍该模块的几个常见用法,实现一台物理机上创建多个https站点。注意通过nginx -V查看,如果有TLS SNI support enabled,表示支持在一台主机上支持多个https主机
2 模块配置
.1、ssl
ssl on | off;
为指定虚拟机启用HTTPS protocol,建议用listen指令代替
.2、ssl_certificate
ssl_certificate file;
当前虚拟主机使用PEM格式的证书文件
创建自签名的证书文件
cd /etc/pki/tls/certs/
make nginx6.crt
将生成的私钥文件解密
openssl rsa -in nginx6.key-out nginx66.key
将这两个文件复制到配置文件里指定的路径即可
在客户的上查看生成的证书信息,命令如下
openssl s_client -connect www.e.com:443
.3、ssl_certificate_key
ssl_certificate_key file;
当前虚拟主机上与其证书匹配的私钥文件
.4、ssl_protocols
ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
支持ssl协议版本,默认为后三个,主流版本是[TLSv1.2]
.5、ssl_session_cache
ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
builtin[:size]:使用OpenSSL内建缓存,为每worker进程私有,开启多大的空间来作为缓存空间
[shared:name:size]:在各worker之间使用一个共享的缓存,这样会提高缓存的命中率,提高性能。
.6、ssl_session_timeout
ssl_session_timeout time;
客户端连接可以复用sslsession cache中缓存的ssl参数的有效时长,默认5m
3 配置实例
创建两台虚拟https主机
vim /etc/nginx/conf.d/https.conf
server{
listen 443 ssl;
server_name www.e.com;
root /app/website5;
ssl_certificate /etc/nginx/ssl/nginx5.crt;
ssl_certificate_key/etc/nginx/ssl/nginx5.key;
ssl_session_cache shared:sslcache:20m;
ssl_session_timeout 10m;
}
server{
listen 443 ssl;
server_name www.f.com;
root /app/website6;
ssl_certificate /etc/nginx/ssl/nginx6.crt;
ssl_certificate_key/etc/nginx/ssl/nginx6.key;
ssl_session_cache shared:sslcache:20m;
ssl_session_timeout 10m;
}