1、 准备好ssl证书,这里我是通过阿里云服务器购买的,购买并申请审核通过后下载证书。
2、 进入linux的nginx的配置文件新建一个文件夹ssl,然后把证书拷进去。
cd /usr/local/nginx/conf
mkdir ssl
cd ssl
3、 然后打开nginx的配置文件进行修改。因为http是80端口,https是443端口,所以把之前listen80端口#号注释。改成listen 443 ssl;
下配置下发新增如下:ssl_certificate和ssl_certificate_key指向对应的证书存放路径。
下面是配置:
server {
server_name 域名;
# listen 80;
listen 443 ssl;
index index.php index.htm index.html;
access_log /data/nginx/logs/game.t.360os.com.access.log combinedio;
error_log /data/nginx/logs/error.log;
location / {
root /data/project/chrome/html/dist/;
index index.html index.htm;
if (!-e $request_filename) {
rewrite ^/(.*) /index.html last;
break;
}
}
ssl on;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 300;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_certificate /usr/local/nginx/conf/ssl/2682986__searcher.mobi.pem;
ssl_certificate_key /usr/local/nginx/conf/ssl/2682986__searcher.mobi.key;
}
4、 配置完后 /usr/local/nginx/sbin/nginx -t 进行校验,在校验过程中,如果是第一次配证书可能会保错:
这种情况下是因为nginx缺少ssl模块,需要重新安装ssl模块。
首先我们进入nginx的最开始压缩包解压的目录下输入命令:
4.1 执行./configure --with-http_ssl_module(注:如果报错则是因为SSL依赖OpenSSL库,而缺少这个库。所以需要执行yum -y install openssl openssl-devel安装,等它安装完再执行./configure)
4.2 执行make。
4.3 执行
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp objs/nginx /usr/local/nginx/sbin/nginx
(之前的nginx解压目录下objs会对出一个nginx文件。这个就是新版的nginx,把之前的备份一下,然后把新的复制过去覆盖即可,当然因为nginx是启动的,可能覆盖不了,所以需要先停止nginx服务再覆盖)
5、最后再执行./sbin/nginx -t 校验和./sbin/nginx -s reload重启加载即可。
6、我们看很多网站请求http的时候重定向到https上,那么如何进行配置http重定向到https上呢?
我们可以在之前nginx配置文件里面再起一个server,然后进行如下配置:
server {
listen 80;
server_name searcher.mobi;
rewrite ^ https://$http_host$request_uri? permanent;
}
6、 如果想同时开启http和https共用的话,可配一个server:
server {
listen 80;
listen 443 ssl;
……
server_name 域名;
ssl_certificate 证书路径;
ssl_certificate_key 证书key路径;
}