실천 과정 에서 나 는 stompjs, websocket 과 nginx 의 문제 와 총 결 을 만 났 다.
1. AWS EC2 는 WebSocket 을 지원 하지 않 습 니 다.
직통 솔 루 션 영문 판
간단하게 말하자면 웹 소켓 밑 에 TCP 프로 토 콜 을 기반 으로 하 는 서버 가 HTTP 프로 토 콜 을 기반 으로 80 포트 를 노출 한다 면 웹 소켓 은 연결 할 수 없 을 것 입 니 다.
HTTP TCP 。
이 문제 로 인해 stompjs 가 서버 에 연결 되 지 않 고 어떤 버 전이 호 환 되 지 않 는 로 그 를 보고 할 수 있 습 니까?
그리고 보안 팀 의 설정:
마찬가지 로 NGINX 를 리 버스 에이전트 로 사용 했다 면 NGINX 도 설정 을 해 야 한다.
// https://gist.githubusercontent.com/unshift/324be6a8dc9e880d4d670de0dc97a8ce/raw/29507ed6b3c9394ecd7842f9d3228827cffd1c58/elasticbeanstalk_websockets
files:
"/etc/nginx/conf.d/01_websockets.conf" :
mode: "000644"
owner: root
group: root
content : |
upstream nodejs {
server 127.0.0.1:8081;
keepalive 256;
}
server {
listen 8080;
location / {
proxy_pass http://nodejs;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
"/opt/elasticbeanstalk/hooks/appdeploy/enact/41_remove_eb_nginx_confg.sh":
mode: "000755"
owner: root
group: root
content : |
mv /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf.old
2. NGINX 가 역방향 대 리 를 하 는 것 은 주의해 야 할 문제 이다.
모든 문 제 를 배제 한 후에 남 은 문 제 는 역방향 대리 에서 고려 할 수 있 고 몇 가 지 는 고려 할 수 있다.
HTTP
: http 는 세 가지 버 전이 있 습 니 다. http 1.0, 1.1, 2.0 입 니 다. 현재 주류 브 라 우 저 는 http 1.1 버 전 을 사용 하고 있 습 니 다. 더 좋 은 호환성 을 확보 하기 위해 리 트 윗 할 때 협의의 버 전 번 호 를 수정 하지 않 는 것 이 좋 습 니 다
: NGINX 는 경로 재 작성 기능 을 가지 고 있 습 니 다. 이 기능 을 사용 하면 문제 가 여기에 있 을 수 있 습 니 다. NGINX 는 경로 재 작성 시 경 로 를 디 코딩 해 야 하기 때문에 디 코딩 후에 인 코딩 없 이 백 엔 드 서버 에 보 내 서 백 엔 드 서버 가 URL 을 디 코딩 하지 못 할 수도 있 습 니 다.3. IE8 IE9 는 웹 소켓 을 간단하게 지원 하 는 방안 이 있 습 니까?
현재 테스트 에서 가장 간단 한 방안 은 플래시 에 기반 한 것 이다.참고:https://github.com/gimite/web...
이 방안 은 웹 소켓 서비스 에 있 는 843 포트 에서 socket 을 제공 해 야 합 니 다.policy_files, 참고: A PolyFill for WebSockets
인터넷 에서 도 socket. io 를 사용 하여 ajax 장 윤 훈 을 기반 으로 하 는 방안 이 있 습 니 다. 서버 가 확 정 된 경우 서버 코드 를 쉽게 바 꾸 지 않 습 니 다.또한 ajax 장 륜 훈련 도 지연 되 고 disconnect 와 는 되 돌 릴 수 없 는 문제 입 니 다.
4. stompjs 가 연 결 된 후 connect 를 호출 하지 않 았 습 니 다.callBack
이 문 제 는 주로 웹 - socket - js 를 사용 하여 ie8, ie9 에 나타 난 것 이다.
이 문 제 는 아직 원인 을 분석 하지 못 했 지만 stompjs 의 소스 코드 가 그리 많 지 않 아서 내일 소스 코드 로 디 버 깅 하여 원인 을 보 았 다.
구체 적 인 원인 은 이미 찾 았 으 니 참고 하 시 오https://github.com/wangduandu...。
5. 참고 문헌
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
iPad에서 WebSocket + Authorization이 연결되지 않음발단은 iPad에서의 개발 환경을 정비하려고 했기 때문이었습니다. VPS에 개발 환경을 넣을 수 있으면 편리하다고 생각해, 를 인스톨 해, 그대로는 누구라도 사용할 수 버리므로, Apache를 리버스 프록시로 해, ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.