跳转至

nginx安装配置SSL/HTTPS证书说明

  1. 参考配置文件里的省略号代表原来http的配置文件内容,根据实际情况替换参考配置文件中的证书文件路径(高亮标示行);
  2. 如果收到的证书公钥为pem后缀,则自行修改配置文件中的证书文件后缀,或者修改证书文件后缀,保持二者文件名完全一致;
  3. 确认服务器443端口已开放,对部分云服务器商(如阿里云/腾讯云),还需要在产品控制台的安全组开放443端口,具体请参考云服务商文档;
  4. 重载/重启nginx,使配置生效;
  5. 如果使用了CDN/负载均衡,若CDN支持http协议回源则只在CDN上配置证书即可。如果CDN产品不支持http协议回源,则需要同时在服务器和CDN上配置证书,详情可以咨询相应CDN产品技术支持。

参考配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
server 
{
    listen 443 ssl; 
    ...

    ssl on;
    ssl_certificate /usr/local/nginx/conf/ssl/yourdomain_com_chained.crt;   
    ssl_certificate_key /usr/local/nginx/conf/ssl/yourdomain_com.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    
    ssl_prefer_server_ciphers on;   
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

    ...
}

强制HTTPS

nginx的强制HTTPS在配置文件server容器中实现,有两种方式

HTTP与HTTPS在不同的server容器中

注意修改实际域名。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
server {
    listen 80;
    server_name yourdomain.com;
    rewrite ^/(.*) https://$host/$1 permanent;
    ...
}
server 
{
    listen 443 ssl; 
    ...
}

HTTP与HTTPS在同一个server容器中

注意修改实际域名。

1
2
3
4
5
6
7
8
9
server {
    listen 80;
    listen 443 ssl;
    server_name example.com;
        if ($scheme = http) {
            return 301 https://$host$request_uri;
        }
    ...
}