由于在EBS中部署的Tomcat中无效的Upgrade标头,握手失败 [英] Handshake failed due to invalid Upgrade header in Tomcat deployed in EBS
问题描述
我在Amazon Elastic beantalk服务器的tomcat 8环境中部署了一个Java spring应用程序.该应用程序已使用适当的证书配置了HTTPS.当套接字连接连接应用程序时,日志中出现以下错误
I have a java spring application deployed in a tomcat 8 environment in Amazon elastic beanstalk server. The application has HTTPS configured with proper certificate. When a socket connection connect the application I am getting below error in log
ERROR o.s.w.s.s.s.DefaultHandshakeHandler - Handshake failed due to invalid Upgrade header: null
我试图通过Internet弄清楚,一些帖子说它需要启用HTTPS. HTTPS已启用,并且对同一服务器的常规Web服务调用有效.
I tried to figure out over internet, some post is saying it need to enable HTTPS. HTTPS is already enabled and normal webservice calls to the same server works.
请让我知道是否有人有任何想法.谢谢!
Please let me know if anyone has any idea. Thank you !
推荐答案
问题是弹性beantalk使用代理,因此您可以配置代理以支持套接字.
The problem is the elastic beanstalk uses a proxy, so you can configure the proxy to support sockets.
Tomcat的默认代理是Apache,我将其与下一个文件一起更改为nginx:
The default proxy to Tomcat is Apache, I have changed it to nginx with the next file:
.ebextensions \ nginx-proxy.config
option_settings:
option_settings:
aws:elasticbeanstalk:environment:proxy:
aws:elasticbeanstalk:environment:proxy:
ProxyServer: nginx
然后我添加了我的nginx文件:
then I added my nginx file:
.ebextensions \ files.config
个文件: "/etc/nginx/conf.d/01_websockets.conf": 模式:"000644" 所有者:root 组:根 内容: worker_processes 1;
files: "/etc/nginx/conf.d/01_websockets.conf" : mode: "000644" owner: root group: root content : | 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";
}
}
}
祝你好运!
这篇关于由于在EBS中部署的Tomcat中无效的Upgrade标头,握手失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!