玩儿转nginx——配置HTTPS server

一个简单的https server配置
server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ...
}

几点说明:

  • 证书公钥是一个公共文件,会被发送到每一个连接到server的客户端
  • 证书私钥为保证安全,需要严格控制访问权限,但是必须可以被nginx master进程访问
  • 公钥和私钥也可以放在一个文件里,此时需要控制证书文件的访问控制;虽然公私钥放在一个文件,但是只有公钥会发送给客户端
https server优化

使用https会消耗额外的CPU资源,在多核系统下,nginx工作进程一般不少于可用的CPU核数。使用HTTPS最密集的CPU操作是SSL握手,我们可以从两个方面来减少每个客户端SSL握手的次数:

  • 使用 keepalive参数,使几个请求公用一个连接
  • 使用ssl_session_cache参数,重用SSL会话参数以避免并行连接和后续连接的SSL握手
worker_processes auto;

http {
    # 所有工作线程共享的缓存,1m可以存储4000个session
    # 每个共享的缓存应该有一个任意的名字,如这里的SSL
    # 具有相同名称的缓存可用于多个虚拟服务器
    ssl_session_cache   shared:SSL:10m;
    # 指定客户端可以重用会话参数的时间,默认是5分钟
    ssl_session_timeout 10m;

    server {
        listen              443 ssl;
        server_name         www.example.com;
        # 服务器保持此连接为打开状态的时间,默认是75s
        # 如果为0则禁用保持连接
        keepalive_timeout   70;

        ssl_certificate     www.example.com.crt;
        ssl_certificate_key www.example.com.key;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         HIGH:!aNULL:!MD5;
        ...
同时监听HTTP和HTTPS的配置
server {
    listen              80;
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;
    ...
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值