net::ERR_HTTP2_PROTOCOL_ERROR 200,使用http2 nginx代理连接到java Spring Boot 应用程序

gudnpqoy  于 2023-02-21  发布在  Nginx
关注(0)|答案(1)|浏览(761)

我运行CapRover来启用我的Java Sping Boot 嵌入式Tomcat服务器上的https和域。这个Java应用程序在Http 2上工作来启用更多的SSE事件。

在没有代理的情况下运行良好

没有CapRover/ nginx代理的应用程序运行良好(所以当我访问服务器上的ip:port时)。

启用nginx代理时出错

当我添加一个nginx代理来启用CapRover应用程序上的https/domain时,几分钟后,我在浏览器的控制台中收到此错误:
火狐中的NS_ERROR_NET_PARTIAL_TRANSFER。Chrome中的net::ERR_HTTP2_PROTOCOL_ERROR 200
这个错误发生在SSE流端点上。顺便说一句,当加载应用程序时,我在这些端点上收到SSE事件,所以端点确实工作。但似乎在某个时间段后出现错误,可能是超时或其他原因?
这是我的nginx配置:

events {
}
http {
    server {
        listen 443;
        location / {
            proxy_pass https://MY_IP_ADDRESS_COMES_HERE:7372; 
        }
    }
}

卡普罗孚指令proxy_http_version 1.1;

CapRover似乎增加了proxy_http_version 1.1;,而且不支持2. 0,所以我想要实现的很可能是行不通的。

ibrsph3r

ibrsph3r1#

正确的指令是:

listen 443 ssl http2;

您应该通过添加以下指令来添加SSL密钥和证书的路径:

ssl_certificate ...;
ssl_certificate_key ...;

此外,您还需要以下指令:代理ssl服务器名称和代理ssl验证。See

相关问题