Nginx下配置网站 ssl 实现 https 加密访问

12月17日 · 2015年

        现在好像开始流行 https 访问模式了。从谷歌到百度,到现在越来越多的网站都开始使用加密访问。虽然 https 访问速度相比 http 会慢一点点,不过对于现在的网络传输速度来说,这似乎已经越来越不是个问题了。这里就说一下在 Nginx 下如何配置 SSL 实现 https 加密访问,其实 Nginx 相比较 Apache、IIS、Tomcat 等其他环境来说,配置 SSL 是最简单的了吧。

1、申请证书。这没啥说的,国内的沃通,国外的 StartSSL 等都可以申请,不但申请简便而且证书签发速度还很快。以下以沃通签发的证书为例说明。

2、申请到沃通证书后,解压压缩包,然后再解压 for Nginx.zip 文件夹,即得到一个 .crt 文件和一个 .key 文件。文件名可随意更改成自己喜欢的,不改也没关系。

3、把解压得到的两个文件上传到服务器某个目录里,这里以 root 目录为例。

4、在 “/usr/local/nginx/conf/vhost/” 目录中,找到你对应站点的 conf 文件,然后修改设置如下

server
{
listen 80;
listen 443 ssl;
#listen [::]:80;
ssl on;
        ssl_certificate /root/*.crt;
        ssl_certificate_key /root/*.key;

        注意文件名和路径别写错了。

5、重启 Nginx,就可以看到 SSL 证书生效,且  https 可以访问站点了。

6、如果想全站强制 https 访问,可参考修改 conf 文件如下:

server {
    listen 80;
    server_name www.yoursite.com;
    rewrite ^/(.*) https://www.yoursite.com/$1 permanent;
}
server
{
    listen 443;
    server_name www.yoursite.com;
    index index.html index.htm index.php;
    root  /home/wwwroot;

    location ~.*.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$
    {
        expires      30d;
     }

    location ~.*.(js|css)$
    {
        expires      12h;
     }

    ssl on;
    ssl_certificate /root/*.crt;
    ssl_certificate_key /root/*.key;
 }

        除了这种 rewrite 方法,还有利用 nginx 的497 状态码来进行跳转。用哪种方法就看自己喜好吧!

0 条回应
验证码
输入运算符及数字使等式成立
{{comment.validate_num1}} = {{comment.validate_num2}}
点赞确定
退出登录?
取消 确定