nginx 역방향 에이전트 웹 소켓 403 오류 문제
1998 단어 자바 실시 간 통신
nginx 1.3 이후 에 야 웹 소켓 을 지원 합 니 다.
프로젝트 는 서버 에서 웹 으로 메 시 지 를 전송 해 야 하기 때문에 H5 웹 소켓 을 사용 합 니 다.
js 코드:
var websocket = null;
var hostname = location.hostname;
var port = location.port;
var pathName=window.document.location.pathname;
var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
if ('WebSocket' in window) {
websocket = new WebSocket("ws://" + hostname + ":" + port + projectName + "/websocket.do");
}
else if ('MozWebSocket' in window) {
websocket = new MozWebSocket("ws://" + hostname + ":" + port + projectName + "/websocket.do");
}
else {
websocket = new SockJS(hostname + ":" + port + projectName + "/sockjs/websocket.do");
}
//
websocket.onopen = function (event) {
console.log(" ");
};
// ...
서버 에서 springMVC 의 웹 소켓 을 사용 하여.do 요청 을 설정 합 니 다.
// websocket
webSocketHandlerRegistry.addHandler(goodsWebsocketHandler(),"/websocket.do").addInterceptors(new HandshakInterceptor());
// websocket
webSocketHandlerRegistry.addHandler(goodsWebsocketHandler(),"/sockjs/websocket.do").addInterceptors(new HandshakInterceptor()).withSockJS();
nginx 프 록 시 포트 요청 을 사용 할 때 403 을 직접 보고 합 니 다.자 료 를 찾 아 보 니 nginx 는 프로 토 콜 헤드 를 설정 해 야 웹 소켓 을 수리 할 수 있 습 니 다.
설정 은 다음 과 같 습 니 다:
location /xhx/ {
proxy_pass $http_host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
결 과 는 403 입 니 다.도 모 는 Origin 이 일치 해 야 한 다 는 것 을 알 게 되 었 습 니 다.do 가 요청 한 코드 를 수정 하고 Origin 을 무시 하 며 다음 코드 를 추가 해 야 합 니 다.
.setAllowedOrigins("*")
4.567913.다시 시도 해 보 세 요.OK,문제 해결!