nginx配置SSL启用HTTPS

启用SSL开启HTTPS访问已经是当今的主流趋势了,本文旨在提供在nginx上快速配置SSL的简易指南。

申请证书

现在证书越来越便宜,GoDaddy证书只需要几美元,甚至StartSSL、AlphaSSL、腾讯云或七牛云等都可以免费申请到SSL证书。如何申请免费证书本文不再赘述。

上传证书至服务器

把申请到的证书文件(包含证书链和私钥)上传到服务器,保存到一个nginx可以读取到的地方,如/home/ssl/

  • /home/ssl/yourname.cer 为证书链
  • /home/ssl/yourname.key 为公钥

修改nginx配置

在nginx配置文件中,把原来server块中的80端口(http访问)的语句改为443端口,并引入SSL各项配置,同时启用HSTS(HTTP严格传输安全):

server {
    listen 443 ssl;
    server_name yourname;
    root /home/www/yourname;
    index index.php index.html;    

    ssl_certificate /home/ssl/yourname.crt;
    ssl_certificate_key /home/ssl/yourname.key;

    ssl_stapling on;
    ssl_stapling_verify on;

    add_header Strict-Transport-Security "max-age=31536000";

    access_log /var/log/nginx/yourname.log combined;

    location / {
                #
        }     
}

然后再新建一个server块,目的是把http访问重定向到https:

server {  
    listen 80;
    server_name yourname;
    rewrite     ^   https://$host$request_uri? permanent;
}

保存后重载nginx即可。

service nginx reload