我正在编写 nginx 配置,我有一个基本问题。
之间有什么区别:
listen 443 ssl;对比listen [::]:443 ssl;对比listen [::]:443 ssl http2;
我的目标是保护这个 Web 应用程序的安全,同时保持对旧客户端的兼容。
注意:我知道这[::]:443与 ipv6 有关,但在这种情况下它是否也包含 ipv4?想澄清我的概念。
kri*_*sFR 16
listen 443 ssl: 使 nginx 侦听服务器上的所有 ipv4 地址,端口 443 ( 0.0.0.0:443)
尽管
listen [::]:443 ssl: 使 nginx 侦听服务器上的所有 ipv6 地址,端口 443 ( :::443)
[::]:443默认情况下不会让 nginx 响应 ipv4,除非您指定参数ipv6only=off:
listen [::]:443 ipv6only=off;
根据文档:http : //nginx.org/en/docs/http/ngx_http_core_module.html#listen
ssl :
ssl 参数 (0.7.14) 允许指定此端口上接受的所有连接都应在 SSL 模式下工作。
http2:
http2 参数 (1.9.5) 将端口配置为接受HTTP/2连接。
这并不意味着它只接受 HTTP/2 连接。
根据RFC7540
如果客户端在不了解下一跳支持 HTTP/2 的情况下请求“http”URI,则使用 HTTP 升级机制。客户端通过发出 HTTP/1.1 请求来实现,该请求包括带有“h2c”令牌的 Upgrade 标头字段。
不支持 HTTP/2 的服务器可以响应请求,就好像升级头字段不存在一样。
HTTP/1.1 200 OK Content-Length: 243 Content-Type: text/html支持 HTTP/2 的服务器通过 101(交换协议)响应接受升级。在终止 101 响应的空行之后,服务器可以开始发送 HTTP/2 帧。
总结一下:
不支持 HTTP/2 的客户端永远不会向服务器请求 HTTP/2 通信升级:它们之间的通信将完全是 HTTP1/1。
支持 HTTP/2 的客户端将要求服务器(使用 HTTP1/1)进行 HTTP/2 升级:
也许更总结在这里:http : //qnimate.com/http2-compatibility-with-old-browsers-and-servers/
但是,nginx 文档对基于 TLS 的 HTTP/2 做了以下说明:
请注意,通过 TLS 接受 HTTP/2 连接需要“应用层协议协商”(ALPN) TLS 扩展支持,该支持仅自 OpenSSL 1.0.2 版起可用。
确保老客户符合此要求。
| 归档时间: |
|
| 查看次数: |
14160 次 |
| 最近记录: |