Nginx如何安装https-ssl证书

今天待着想起腾讯云有免费1年的SSL证书,然后点击了申请,擦啊擦,原来申请不是域名不合法,就是审核不通过,这次我的www.opqnext.com 居然破天荒了哎,秒过...

  • 那就开始安装吧

将域名 www.opqnext.com 的证书文件1 www.opqnext.com bundle.crt 、私钥文件2_www.opqnext.com.key保存到同一个目录,例如/usr/local/nginx/conf目录下。

更新Nginx根目录下 conf/nginx.conf 文件如下:

server {
        listen 443;
        server_name www.opqnext.com; #填写绑定证书的域名
        ssl on;
        ssl_certificate 1_www.opqnext.com_bundle.crt;
        ssl_certificate_key 2_www.opqnext.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
        ssl_prefer_server_ciphers on;
        location / {
            root   html; #站点目录
            index  index.html index.htm;
        }
    }
配置文件参数 说明
listen 443 SSL访问端口号为443
ssl on 启用ssl功能
ssl_certificate 证书文件
ssl_certificate_key 私钥文件
ssl_protocols 使用的协议
ssl_ciphers 配置加密套件,写法遵循openssl标准

然后 nginx -t 检测配置文件 nginx -s reload 重启nginx就OK了

我是这么想的,但是还是出现了问题...

  • 问题1:unknown directive "ssl"

报错如下:

nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/vhost/blog.com.conf:5
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

出现这个错误说明没有将ssl模块编译进nginx,在configure的时候加上“–with-http_ssl_module”即可

详细一点:

####### 下载你当前版本的nginx包,并且解压 进到目录
./configure --with-http_ssl_module
####### 切记千万不要make install 那样就覆盖安装了
make
####### 将原来的nginx备份 备份之前先kill当前正在启动的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
####### make之后会在当前目录生成 objs 目录
cp objs/nginx /usr/local/nginx/sbin/nginx
####### 然后重新启动nginx
/usr/local/nginx/sbin/nginx

  • 问题2:http 转到 https

据说是有加rewrite的方法:

rewrite ^/(.*)$ http://domain.com/$1 permanent;

但是好像现在nginx新版本已经换了种写法:

server {
    listen    80;
    server_name    www.opqnext.com;
    return    301 https://$server_name$request_uri;
}

server {
    listen    443 ssl;
    server_name    www.opqnext.com;

    [....]
}

反正这种方法挺好使,然后重启 nginx 终于完成了!

两个人的假期 - 痛仰乐队

文章来源:郭贰小姐的博客-opqnext.com

推荐阅读更多精彩内容