在EBS部署的Tomcat中,由于无效的Upgrade头而导致握手失败。

9

我有一个Java Spring应用程序部署在Amazon弹性Beanstalk服务器上的Tomcat 8环境中。该应用程序已经配置了适当的证书,支持HTTPS。当套接字连接到应用程序时,日志中会出现以下错误:

ERROR o.s.w.s.s.s.DefaultHandshakeHandler - Handshake failed due to invalid Upgrade header: null

我尝试在互联网上找出答案,有些帖子说需要启用HTTPS。但是HTTPS已经启用,并且正常的Web服务调用到同一台服务器也可以工作。如果有任何想法,请告诉我。谢谢!

这个问题相关吗?https://dev59.com/mV0Z5IYBdhLWcg3wphsE - Anand Bhat
@AnandBhat 我的实例安全组已经启用了HTTPS。 - A Paul
1
@APaul,你找到解决方案了吗?我也遇到了同样的问题,能否请你分享一下解决方案? - Tirupati Singh
1个回答

5
问题在于Elastic Beanstalk使用代理,因此您可以配置代理以支持套接字。
默认情况下,Tomcat的代理是Apache,我已将其更改为nginx,下面是相关文件:
.ebextensions\nginx-proxy.config
选项设置:
aws:elasticbeanstalk:environment:proxy:
ProxyServer: nginx

接下来我添加了我的nginx文件:

.ebextensions\files.config

文件: "/etc/nginx/conf.d/01_websockets.conf" : 模式: "000644" 所有者: root 组: root 内容 : | worker_processes 1;

        events {
                worker_connections 2024;
        }


        http {
                include mime.types;
                default_type application/octet-stream;
                sendfile on;
                keepalive_timeout 65;
                gzip on;

                server {
                        listen 80;
                        server_name localhost;


                        location / {
                                proxy_set_header X-Real-IP $remote_addr;
                                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                                proxy_set_header Host $http_host;
                                proxy_set_header X-NginX-Proxy true; 

                                # prevents 502 bad gateway error
                                proxy_buffers 8 32k;
                                proxy_buffer_size 64k;

                                proxy_pass http://127.0.0.1:8080;
                                proxy_redirect off;

                                # enables WS support
                                proxy_http_version 1.1;
                                proxy_set_header Upgrade $http_upgrade;
                                proxy_set_header Connection  "upgrade";
                        }
                }
        }

祝你好运!


如果您有新的问题,请点击提问按钮进行提问。如果您拥有足够的声望,您可以投票支持该问题。或者,将其标记为收藏夹中的“星标”,您将收到任何新答案的通知。 - jotasi
将以下字符串添加到nginx配置文件对我很有帮助:

启用WS支持

proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";谢谢!
- pyOwner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接