当前位置:首页 > 群晖专栏 > 运维部署 > 正文内容

Nginx 配置 OCSP Stapling 优化 HTTPS 访问

admin4年前 (2021-01-03)运维部署125

前言

由于国内网络对 Let's Encrypt 域名证书的 OSCP 服务器域名进行了 DNS 污染,用户在访问网站时,请求 OSCP 服务器的过程会导致网站访问速度很慢.本文将介绍如何通过配置网站的 nginx 来预先装订 OCSP 证书,达到优化 https 访问速度的效果.



配置流程

修改 nginx 域名 conf 文件

修改域名 conf 文件,在证书信息下加入以下代码:

    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /path/to/full_chain.pem;
    resolver 8.8.8.8 8.8.4.4 valid=60s ipv6=off;
    resolver_timeout 5s;
  • full_chain.pem为完整证书链证书.

  • /path/to/full_chain.pem;修改为证书实际绝对路径.

  • 由于国内 VPS 服务器访问 OCSP 服务器可能会被污染而导致失败,所以添加resolver来解决此问题.


修改完成后执行 nginx -t 检查,执行 nginx -s reload 重载 nginx 生效.
docker 环境执行 docker exec nginx nginx -t 检查,执行 docker exec nginx nginx -s reload 重载 nginx 生效.

检查生效

在客户端,例如 macOS Linux 等系统下执行以下命令检查是否生效:

openssl s_client -connect www.yourdomain.com:443 -servername www.yourdomain.com -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"
# 将命令中 www.yourdomain.com 改为你的域名

未生效结果

OCSP response: no response sent

成功生效结果

OCSP response:
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response


配置完成后首次检查可能会显示未生效,因为 Nginx 收到首次请求会发起异步 OCSP 请求,尝试多执行几次来查询即可.

参考示例

upstream dockername { 
    server 127.0.0.1:8080;
}

server {
    listen 80;
    server_name  www.yourdomain.com;
    return 301 https://www.yourdomain.com$request_uri;
}

server {
    listen 443 ssl;
    server_name  www.yourdomain.com;
    gzip on;    

    ssl_certificate /usr/local/nginx/conf/ssl/www.yourdomain.com.crt;
    ssl_certificate_key /usr/local/nginx/conf/ssl/www.yourdomain.com.key;

    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /usr/local/nginx/conf/ssl/www.yourdomain.com.crt;
    resolver 8.8.8.8 8.8.4.4 valid=60s ipv6=off;
    resolver_timeout 5s;    

    # access_log /var/log/nginx/dockername_access.log combined;
    # error_log  /var/log/nginx/dockername_error.log;

    location / {
        proxy_redirect off;
        proxy_pass http://dockername;

        proxy_set_header  Host                $http_host;
        proxy_set_header  X-Real-IP           $remote_addr;
        proxy_set_header  X-Forwarded-Ssl     on;
        proxy_set_header  X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto   $scheme;
        proxy_set_header  X-Frame-Options     SAMEORIGIN;

        client_max_body_size        100m;
        client_body_buffer_size     128k;

        proxy_buffer_size           4k;
        proxy_buffers               4 32k;
        proxy_busy_buffers_size     64k;
        proxy_temp_file_write_size  64k;
    }
}

结语

如果是境外 VPS 服务器,可以无需上述代码中含有resolver的两行代码,手动删除即可.国内 VPS 可试情况修改参数中的 DNS 地址来测试是否生效.

本站提供免费和付费的技术支持.你可以通过留言,邮件,QQ的方式来进行技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面



扫描二维码推送至手机访问。

版权声明:本文由梦魁网络资源站发布,如需转载请注明出处。

本文链接:https://family.monkui.com:39/?id=198

标签: 运维部署
分享给朋友:

相关文章

服务器一键安装LNMP和LAMP环境教程

服务器一键安装LNMP和LAMP环境教程

前言本文将详解如何在Linux服务器上通过国内流行的军哥LNMP一键安装包来快速安装配置LNMP或LAMP环境.LNMP和LAMP是服务器建站环境的简称,LNMP即Linux/Nginx/MySQL/PHP,而LAMP即Linux/Apac...

Nginx设置301重定向到www和强制跳转https教程

Nginx设置301重定向到www和强制跳转https教程

前言本文将详解如何配置Nginx的conf文件来使域名跳转到www和强制跳转到https首先在建站之前,需要确认今后网站是使用类似ioiox.com一级域名,还是www.ioiox.com二级域名,根据域名长度,使用场景,域名视觉美观来决定...

宝塔面板一键安装LNMP和LAMP环境教程

宝塔面板一键安装LNMP和LAMP环境教程

前言本文将详解如何在Linux服务器上通过宝塔面板来快速安装配置LNMP或LAMP环境.LNMP和LAMP是服务器建站环境的简称,LNMP即Linux/Nginx/MySQL/PHP,而LAMP即Linux/Apache/MySQL/PHP...

宝塔面板设置Typecho伪静态去掉index.php教程

宝塔面板设置Typecho伪静态去掉index.php教程

前言Typecho博客初始安装完成后,博客的任何内页面,地址栏都会有index.php(例如https://www.ioiox.com/index.php/archives/about.html)非常影响美观和网站结构,本文将详解在宝塔面板...

Nginx设置Typecho伪静态去掉index.php教程

Nginx设置Typecho伪静态去掉index.php教程

前言Typecho博客初始安装完成后,博客的任何内页面,地址栏都会有index.php(例如https://www.ioiox.com/index.php/archives/about.html)非常影响美观和网站结构,本文将详解在Ngin...

CentOS 7 安装Docker教程

CentOS 7 安装Docker教程

前言Docker安装官方分为以下手动安装和一键安装脚本两种方式,安装流程非常简单.Docker官方手动安装教程升级yumyum update安装依赖包sudo yum install -y ...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。