nginx 接受 http1 和 http2
Posted
技术标签:
【中文标题】nginx 接受 http1 和 http2【英文标题】:nginx accept both http1 and http2 【发布时间】:2017-02-26 20:06:10 【问题描述】:我在 tb v45 上构建了一个 Thunderbird 插件,它使用 nsIXMLHttpRequest 和 XMLHttpRequest 从服务器发布和获取数据,服务器已经使用 http2 协议在 nginx 上设置。
日志是
"POST /service/v2/api HTTP/1.1" 502 1266 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 Lightning/4.7.4"
因此网关不好。我认为这个 http 设置是向后兼容的。
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
如何让 nginx 设置接受 http1 或 nsIXMLHttpRequest 发送正确的标头以便它使用 http2?
【问题讨论】:
【参考方案1】:这真的与标头无关,而是 ngnix 和设置
Thunderbird 不喜欢 http2 设置上的 ssl 证书和密码,在 http1 上很好,所以我不得不在 nginx.conf 中设置它
似乎 Thunderbird 不喜欢某些旧密码,然后对照https://www.ssllabs.com/ssltest/analyze.htm 进行了预修改,发现握手模拟在旧密码上失败了。因此,通过以下设置,我能够让 Thunderbird 正确使用 API 和 SSL 证书。之前我在 Qualys 上的评分为 B,现在它的评分为 A+,一切正常
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
【讨论】:
以上是关于nginx 接受 http1 和 http2的主要内容,如果未能解决你的问题,请参考以下文章
nginx在代理到upstream时转换http1.1为http1.0,长连接转为短连接