美文网首页
Nginx HTTPS 配置

Nginx HTTPS 配置

作者: 037251a7c483 | 来源:发表于2017-07-04 17:05 被阅读923次

一、HTTPS 简介

HTTPS(超文本传输安全协议)HTTP的安全版本。HTTPS 利用HTTP进行同行,但是使用SSL协议来加密数据。

HTTPS 协议的URL/URI 由 "https:// " 组成。默认使用443 端口。

二、HTTPS 配置步骤

2.1 步骤概览

  1. 申请证书(如果使用的是云主机,可在阿里云或者腾讯云申请较为方便)。腾讯云颁发证书的速度更快。
  2. 将证书上传至Nginx所在服务器
  3. 配置Nginx SSL

2.2 Nginx 配置

将申请的证书发送到Nginx服务器上,一般将证书放在nginx主目录下的ssl目录中。下面是我的配置:

  • 证书存放目录
/usr/local/nginx-1.10.3/ssl/Nginx
  • nginx.conf

在nginx.conf 已经包含一个server(80)的基础上,再增加一个server,用于配置HTTPS。这样既可以访问http协议的网站,也能访问使用HTTPS的网站

    server {
        listen       443 ssl;
        keepalive_timeout   70;
        server_name  nginxhttp2.lomark.cn;

        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
        ssl_certificate  /usr/local/nginx-1.10.3/ssl/Nginx/1_nginxhttp2.lomark.cn_bundle.crt;
        ssl_certificate_key  /usr/local/nginx-1.10.3/ssl/Nginx/2_nginxhttp2.lomark.cn.key;
        ssl_session_cache   shared:SSL:10m;
        ssl_session_timeout 10m;
        charset koi8-r;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
  • 重启Nginx,查看效果
    注意还要开启443端口的访问权限。

访问网站时要使用"https://" 开头

image.png

如上图所示,左上角出现了一把绿锁,说明我们的HTTPS 配置成功了.

2.3 SSL 参数详解

  • listen 443 ssl
    将ssl作为listen指令的参数,这是官方推荐的做法。如果不这么写,则使用ssl指令开开启ssl的支持。如下:
listen  443;
ssl on;
  • ssl_buffer_size
Syntax: ssl_buffer_size size;
Default:    
ssl_buffer_size 16k;
Context:    http, server

设置用于发送数据的缓冲区的大小。默认大小是 16K,当发送数据大的响应时,这是最小的开销。为了最小化第一个字节的时间,使用较小的值可能是有益的,例如:

ssl_buffer_size 4k;
  • ssl_certificate
    指定PEM格式的证书文件(有的证书以PEM格式结尾)。

  • ssl_certificate_key
    指定PEM格式的密钥文件路径。

  • ssl_ciphers

Syntax: ssl_ciphers ciphers;
Default:    ssl_ciphers HIGH:!aNULL:!MD5;
Context:    http, server

指定启用加密算法。

  • ssl_protocols
Syntax: ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
Default:    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Context:    http, server

启用指定的协议.

  • ssl_session_cache
Syntax: ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
Default:    ssl_session_cache none;
Context:    http, server

设置存储会话参数的缓存的类型和大小。 缓存可以是以下类型之一:

off: 严格禁止使用会话缓存:nginx明确告诉客户端会话可能不被重用。

none:会话高速缓存的使用被轻轻地禁止:nginx告诉客户端会话可能被重用,但实际上并不将会话参数存储在缓存中。

builtin:一个内置OpenSSL的缓存; 仅由一个工作进程使用。 缓存大小在会话中指定。 如果没有给出大小,则等于20480次会话。 使用内置缓存可能会导致内存碎片。

shared:在所有工作进程之间共享缓存。 缓存大小以字节为单位指定; 一兆字节可以存储约4000个会话。 每个共享缓存应具有任意名称。 具有相同名称的缓存可用于多个虚拟服务器。

两种缓存类型可以同时使用,例如:

ssl_session_cache builtin:1000 shared:SSL:10m;

但只使用共享缓存而不使用内置缓存应该更有效率。

  • ** ssl_session_timeout**
Syntax: ssl_session_timeout time;
Default:    ssl_session_timeout 5m;
Context:    http, server

指定客户端可以重用会话参数的时间。

三、HTTP访问强制跳转至HTTPS

用户使用HTTP时,我们可以使用rewrite 指令将URL 重写。

rewrite ^(.*)$ https://$host$1 permanent;

完整的配置文件:

user  nginx ;
worker_processes  4;
error_log  logs/error.log;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    gzip  on;
    server {
    listen  80;
    server_name  nginxhttp2.lomark.cn;
    rewrite ^(.*)$ https://$host$1 permanent;
        location / {
        root html;
            index index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        #listen       443 ssl;
        listen  443;
        ssl on;
        keepalive_timeout   70;
        server_name  nginxhttp2.lomark.cn;

        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
    ssl_certificate  /usr/local/nginx-1.10.3/ssl/Nginx/1_nginxhttp2.lomark.cn_bundle.crt;
        ssl_certificate_key  /usr/local/nginx-1.10.3/ssl/Nginx/2_nginxhttp2.lomark.cn.key;
        ssl_session_cache   shared:SSL:10m;
        ssl_session_timeout 10m;
        charset koi8-r;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {
            root   html;
        }
    }
}

重启Nginx后,在浏览器中以HTTP协议访问时,Nginx会自动将访问跳至HTTPS。

相关文章

  • # nginx https证书配置

    nginx https证书配置 一 前言 此文档针对于nginx配置反向代理使用https证书方法 nginx作为...

  • nginx https 配置

    nginx https 配置

  • nginx配置https

    nginx配置https https需要的证书我们已经申请到了,下面分享下nginx配置https的一些配置参数!...

  • Nginx配置https请求,以及Nginx+keepalive

    一、Nginx配置https请求 要实现Nginx配置https请求,安装的时候需要加上 --with-http_...

  • nginx配置https

    只配置443会导致http和https共存,只要再80里配置个重定向即可return 301 https://$s...

  • nginx https配置

    本地文件上传到服务器

  • Nginx https 配置

    准备环境阿里云 腾讯云部署好站点,且使用DNS解析到云服务器的IP地址 接下来就是配置HTTPS的关键步...

  • Nginx配置HTTPS

  • Nginx 配置 https

    从云服务提供商处申请证书 申请 https 证书教程-百度经验 申请下来的证书目录结构 下文中只拿 Nginx 来...

  • NGINX 配置 HTTPS

    首先是下载证书,我的是再阿里云里面,如果购买成功了,直接下载证书。里面会有两后缀分别为.key和.pem的个文件,...

网友评论

      本文标题:Nginx HTTPS 配置

      本文链接:https://www.haomeiwen.com/subject/aaothxtx.html