Nginx

nginx — 如何修复 “ssl” Directive Is Deprecated, Use “listen … ssl”

nginx 更新到较新版本时,您可能会遇到已弃用的配置。Nginx 使用类似 YAML 的定义格式来创建配置。这种格式随着时间的推移通过添加、删除或更改关键字而发展。

本教程向您展示如何修复 nginx 的“ssl” deprecation warning telling you to use “listen … ssl”。

        

如何使用 OpenSSL Centos 7 在 Nginx 中启用 TLS 1.3

在这里,我们将在我们的生产 CentOS 7 服务器上启用 TLS 1.3。

OpenSSL 是用于传输层安全性 (TLS) 和安全套接字层 (SSL) 协议的强大、商业级且功能齐全的工具包。OpenSSL 是一个软件库,用于保护计算机网络上的通信免受窃听或需要识别另一端方身份的应用程序。它是根据 Apache 样式许可获得许可的,这意味着您可以根据一些简单的许可条件免费获取和使用它用于商业和非商业目的。有关漏洞列表以及发现和修复漏洞的版本,请参阅 OpenSSL漏洞页面。

            

apache 到nginx的rewrite规则转换

apachenginx 的rewrite规则转换

重定向到主站点

在他们的共享主机生活中,曾经使用 Apache 的.htaccess文件配置所有内容的人通常会翻译以下规则:

RewriteCond  %{HTTP_HOST}  example.org
RewriteRule  (.*)          http://www.example.org$1

像这样:

server {
    listen       80;
    server_name  www.example.org  example.org;
    if ($http_host = example.org) {
        rewrite  (.*)  http://www.example.org$1;
    }
    ...
}

 

这是一种错误,繁琐且无效的方式。正确的方法是为 定义一个单独的服务器:…

    

HTTP2 下的 Transfer-Encoding: chunked

在 HTTP 中传输数据有一个 chunked 的方式, 又称“分块传输”。在响应报文里用头字段Transfer-Encoding: chunked 来表示。意思是报文里的 body 部分不是一次性发过来的,而是分成了许多的块(chunk)逐个发送。而 HTTP2.0 协议作为 HTTP协议的升级,自然是对chunked模式做支持?不然!

HTTP2 是没有 chunked 的!

分块传输也可以用于“流式数据”,例如由数据库动态生成的表单页面,这种情况下 body 数据的长度是未知的,无法在头字段“Content-Length”里给出确切的长度,所以也只能用 chunked 方式分块发送。

chunked 的编码规则

  • 每个分块包含两个部分,长度头和数据块;
  • 长度头是以 CRLF(回车换行,即rn)结尾的一行明文,用 16 进制数字表示长度;
  • 数据块紧跟在长度头后,最后也用 CRLF 结尾,但数据不包含 CRLF;
  • 最后用一个长度为 0 的块表示结束,即“0rnrn”

HTTP2 下的分块传输

先说结论,HTTP2 是不支持