1.查看当前nginx的安装情况,是否包含ssl模块
[bema@server17 ~]$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.9.4
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
若安装参数无--with-http_ssl_module,则需要先重新编译nginx,将ssl模块编译进来。参考引用传送门。
2.将对应域名的证书放置再nginx安装目录下,最好新建一个ssl目录,统一存放。
[bema@server17 api61park]$ pwd
/usr/local/nginx/ssl/api61park
[bema@server17 api61park]$ ll
总用量 8
-rw-r--r--. 1 root root 1675 3月 15 17:00 api61park.key
-rw-r--r--. 1 root root 3654 3月 15 17:00 api61park.pem
*.key为密钥文件,*.pem为证书文件
3.修改nginx配置,让其可以支持https请求
server {
default_type 'text/html';
charset utf-8;
listen 80;
server_name m.61park.cn;
#https配置start
listen 443 ssl;
ssl_certificate /usr/local/nginx/ssl/m61park/m61park.pem;#证书目录
ssl_certificate_key /usr/local/nginx/ssl/m61park/m61park.key;#密钥目录
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;#支持的加密协议
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL:!MD5;#支持的加密算法
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 300m;
ssl_prefer_server_ciphers on;
#https配置end
client_header_buffer_size 128k;
large_client_header_buffers 4 128k;
add_header Set-Cookie loginSessionHttps;
port_in_redirect off; #防止跳转的时候带了端口号,会导致404
……
上述配置为http与https共存,即支持两者同时访问。
4.设置非安全连接永久跳转到安全连接的配置,及http请求强制跳转到https
server{
listen 80;
server_name api.61park.cn;
#告诉浏览器有效期内只准用 https 访问
add_header Strict-Transport-Security max-age=15768000;
#永久重定向到 https 站点
return 301 https://$server_name$request_uri;
}
5.重启nginx
/usr/local/nginx/sbin/nginx -s reload
6.浏览器访问测试正确性