我刚刚阅读了一篇关于http1和http2之间差异的文章,但我的主要问题是当它说http2 是二进制协议而http1 是文本协议时。
也许我错了,但我知道任何数据是文本或任何格式,它可以在内存中具有二进制表示形式,即使通过 TCP/IP 网络传输时,数据也会按照层(OSI 模型)的格式进行拆分或 TCP/IP 模型表示),这意味着在通过网络传输数据的上下文中不存在技术上的文本格式。
所以我不能真正理解 http2 和 http1 之间的这种不同,你能帮我更好的解释吗?
我计划使用HTTP / 2协议部署django项目,但是我找不到正确的方法来使用HTTP / 2来为基于django的网站提供服务器,我发现的唯一东西是hyper-h2。
我阅读了文档,但无法设置连接。如果有人知道如何在HTTP / 2上处理django。
我目前正在使用 nuxt.js(使用内置服务器)构建应用程序。也就是说,我一直在通过开发运行 google 灯塔,而且在我的一生中,我无法让它为 http/2 提供服务。
在里面nuxt.config.js我补充说:
render: {
http2: {
push: true,
pushAssets: (req, res, publicPath, preloadFiles) => preloadFiles
.filter(f => f.asType === 'script' && f.file === 'runtime.js')
.map(f => `<${publicPath}${f.file}>; rel=preload; as=${f.asType}`)
}
}
Run Code Online (Sandbox Code Playgroud)
也许我不明白 HTTP/2 如何与 nuxt 一起工作,如果有人能提供任何帮助或建议,那就太好了!
我正在尝试将负载均衡器配置为使用Lets Encrypt提供的证书在 HTTPS 中提供服务,尽管我还无法做到这一点,但阅读本文提供了如何配置的步骤
由于我只对 HTTPS 感兴趣,我想知道这两者之间有什么区别:
但我的意思不是明显的原因,即第一个从负载均衡器到后端没有加密,我的意思是在性能和 HTTP2 连接方面,例如我会继续从http2中获得所有好处,如多路复用和流式传输吗?或者是第一个选项
带非 TLS 后端的 HTTPS 负载均衡器
只是一个幻觉,但我不会得到http2?
ssl load-balancing google-compute-engine google-cloud-platform http2
我有 Envoy 代理处理 SSL 终止。Nginx(docker 容器中的 1.17.0,已编译--with-http_v2_module)是几个上游服务之一。结果,Nginx 在端口 443 上接收流量但不使用该ssl模块:
server {
listen 443;
server_name example.com www.example.com;
root /var/www/html;
...
Run Code Online (Sandbox Code Playgroud)
这工作正常,但如果我尝试添加http2到监听行的末尾,我会收到:
curl: (1) Received HTTP/0.9 when not allowed
Run Code Online (Sandbox Code Playgroud)
...不仅仅是有问题的example.com,而是所有服务器。
出于明显的性能原因,我希望 Envoy 通过 HTTP/2 与 Nginx 对话。
是否有一些技巧可以让 nginx 在端口 443 上使用 http2 而无需 SSL 终止?
编辑:
核心nginx.conf:
user nginx;
worker_processes 2;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
client_max_body_size 64M;
sendfile on;
keepalive_timeout 65; …Run Code Online (Sandbox Code Playgroud) http2 ×5
ssl ×2
django ×1
django-views ×1
django-wsgi ×1
envoyproxy ×1
http ×1
http-1.1 ×1
https ×1
javascript ×1
nginx ×1
nuxt.js ×1
python-3.x ×1
vue.js ×1