nginx 版本
nginx version: nginx/1.23.3
openssl 版本
OpenSSL 1.0.2k-fips 26 Jan 2017
nginx 配置
server {
listen 80;
listen 443 ssl http2;
ssl_certificate /usr/local/nginx/conf/ssl/key.cer;
ssl_certificate_key /usr/local/nginx/conf/ssl/key.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDH$
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
# server_name _;
server_name localhost;
location /fp01/ {
proxy_pass http://127.0.0.1:31600/;
proxy_set_header Host $http_host;
}
}
浏览器请求
- 请问还需要配置什么地方才能支持http2?
- nginx作为网站入口,代理了后端的springboot。被代理的31600端口程序是否也需要开启http2的支持?还是只需要最外面的nginx开启即可?
- 如果不勾选浏览器的
禁用缓存
按钮则部分请求显示协议为h2
要使 Nginx 支持 HTTP/2 协议,需要确保以下三个条件满足:
除此之外,还需要在 http 或 server 块中添加以下配置:
关于被代理的 31600 端口的 Spring Boot 程序是否需要开启 HTTP/2,如果想要在客户端和服务端之间使用 HTTP/2 协议进行通信,那么服务端需要支持 HTTP/2,也就是需要在服务器端支持 HTTP/2。
最后,关于你的问题部分请求显示协议为 h2。可能是因为某些请求使用了 HTTP/2 协议,而另一些请求则使用了 HTTP/1.1 协议,因此在浏览器中会显示为 h2。这并不会影响程序的正常运行,只是浏览器显示的协议可能会有所变化。