Spring Boot 애플리케이션에서 ws (비보안 WebSocket)를 사용하고 있습니다. 클라이언트가 서버에 연결을 시도하면 다음 오류가 나타납니다.
Handshake failed due to invalid Upgrade header: null
스프링 부트 앱은 Apache 프록시 뒤의 Ubuntu 서버에서 실행됩니다. Apache는 다음과 같이 구성됩니다.
<VirtualHost *:80>
DocumentRoot /var/www/myapp/public/
ServerAdmin webmaster@localhost
ServerName app.myapp.biz
RewriteEngine On
RewriteCond %{HTTP:Upgrade}^websocket$ [NC,OR]
RewriteCond %{HTTP:Connection}^upgrade$ [NC]
RewriteRule .* "ws:/127.0.0.1:8096/$1" [P,QSA,L]
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://127.0.0.1:8096/
ProxyPassReverse / http://127.0.0.1:8096/
RequestHeader set X-Forwarded-Proto http
RequestHeader set X-Forwarded-Port 80
SetEnv mongo_username aUser
SetEnv mongo_password aPassword
</VirtualHost>
application.properties
다음과 같이 봄 응용 프로그램에 대한은 다음과 같습니다 :
debug=false
server.port=8096
server.address=127.0.0.1
server.forward-headers-strategy=native
server.tomcat.use-relative-redirects=true
server.tomcat.remoteip.protocol-header=x-forwarded-proto
server.tomcat.remoteip.remote-ip-header=x-forwarded-for
server.tomcat.remoteip.port-header=x-forwarded-port
내 개발자 컴퓨터에서 앱을 실행하면 모든 것이 잘 작동합니다. 서버에 배포되면 앞서 언급 한 오류가 발생합니다. 나는 많이 봤지만이 문제에 특정한 것을 찾을 수 없었다. 누군가 도울 수 있기를 바랍니다.
정보 : 연결을 시도하는 프런트 엔드 앱은 ng2-stompjs
.
마침내 오류를 찾았습니다. 위해 의 문은 apache.conf
중요합니까! 작동중인 conf 파일은 다음과 같습니다.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName app.myapp.biz
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://127.0.0.1:8096/
ProxyPassReverse / http://127.0.0.1:8096/
RewriteEngine On
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://127.0.0.1:8096/$1" [P,L]
SetEnv mongo_username aUser
SetEnv mongo_password aPassword
</VirtualHost>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다