Nginx配置HTTPS

Nginx 阅读: 234

HTTPS介绍

HTTPS(HyperText Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。可以理解为 HTTPS = HTTP + SSL/TLS,即在HTTP协议基础上加入了加密层,保障了数据传输的安全。

这里只要简单了解,更详细的内容可以查看文章末尾的第一篇参考文章。

如何让你的网站支持HTTPS

要支持HTTPS你需要做两件事,获得一个SSL证书,然后在你的web服务器上安装这个证书。

如何申请SSL证书

我的SSL证书是在:FreeSSL首页 - FreeSSL.cn 一个申请免费HTTPS证书的网站,这个网站申请的。

个人的话可以使用免费证书,商用的话可以使用收费的。

具体申请过程就不说了,可以查看FreeSSL给的视频教程:如何使用FreeSSL申请免费证书?

Nginx配置HTTPS

首先确认你的Nginx安装了SSL模块,使用实现下面的命名查看编译选项:

nginx -V

如果发现有ngx_http_ssl_module说明支持SSL,如果没有需要重新编译,具体可以查看文章末尾的第二篇参考文章。

获取好证书后,你会得到两个文件:crt文件和key文件 或者是 pem文件和key文件。把它们上传到你的服务器上,然后打开Nginx配置文件,增加一个server块:

# 配置HTTPS
server {
        listen 443 ssl;
        server_name example.com;
        # SSL设置
        ssl_certificate      /path/to/xxx.crt 或 /path/to/xxx.pem;
        ssl_certificate_key  /path/to/xxx.key;
        ssl_protocols        TLSv1.2 TLSv1.1 TLSv1;
        ssl_ciphers   ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_prefer_server_ciphers   on;
        ssl_session_timeout 5m;

        # 其他配置省略
        # ...
}

这里只列出了与HTTPS有关的配置,其他配置和普通server一致。

配置好HTTPS后,原来是通过HTTP访问,我们可以修改原来的HTTP配置,让它跳转到新的HTTPS上。

server {
        listen 80;
        server_name example.com;
        # 使用301跳转
        return 301 https://$host$request_uri;

        # 其他配置省略
        # ...
}

配置好了别忘了重启Nginx。

其他服务器的配置方法也可以参考FreeSSL给的例子:如何安装我们的 SSL 证书,IIS、Nginx、Apache、Exchange、Tomcat?

网站不能访问的问题

如果配置好了后不能访问,可能源于有:

  • 证书有问题
  • 配置文件有问题
  • 防火墙443端口没有打开
  • 如果是云服务器,可能安全组没有打开443端口

参考文章

  1. HTTPS系列干货(一):HTTPS 原理详解 - 知乎
  2. nginx实现https网站设置 - 静小妞 - 博客园 (里面有自己颁布SSL证书的方法)
  3. 让网站永久拥有HTTPS - 申请免费SSL证书并自动续期 - Lucien's Blog
  4. FreeSSL博客 (里面有一些关于SSL证书的知识)

版权声明:本文为博主原创文章,转载需注明来自: 洛洛の空间