배경웹 소켓은 EC2 URL을하지만 ElasticBeanstalk의 URL에서 작동
내가 가지고있는 리버스 프록시 (의 nginx)는 singleInstance 환경 유형과 EC2 인스턴스를 생성 ElasticBeanstalk (ELB)를 가리키는 (EC2). 내가 dockerized nodejs 응용 프로그램을 사용하고 있습니다. nginx은 우리 인프라의 진입 점입니다. 브라우저에서
Desciption
, 내가 직접 EC2의 웹 소켓 URL을 호출하고 동일한 결과 ELB 수 있습니다
에 오신 것을 환영합니다 SockJS에!
나는 다음과 같은 설정을 사용nginx를 들어 (의 nginx conf.d/my.conf) 난 단지 proxy_pass
로 시작하는 줄에 EC2 또는 의 ELB을 URL을 변경 :
location /stomp {
proxy_pass <{EC2_URL}/stomp OR {ELB_URL}/stomp>;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
의 웹 소켓 EC2 URL이 제대로 작동합니다.
코드 : 1002 이유 : "서버에 연결할 수 없습니다"
이
이상한 일이 있다는 것입니다 ELB URL에
WebSocket을 내 클라이언트에 다시 오류 상태를 반환 내 nginx 서버는 심지어 ELB의 경우 요청을 기록하지 않습니다.
가 왜 ELB가 의 nginx 구성에서 작동하지 않는 질문? 그것을 고치는 방법?
나는 무엇을 시도 했습니까? 그들이 조언 located in /tmp/deployment/config/etc#nginx#nginx.conf
에 위치한 00_elastic_beanstalk_proxy.conf
처럼의 nginx 설정 파일을 대체 할 곳
나는 question과 blog을 확인했다. 하지만 내 서버에는 파일 시스템에 nginx 설정 파일이 없습니다 ...
그럼 nginx는 귀하의 경우에 실행중인가요? –
연결하려는 포트는 무엇입니까? 기본 Load Balancer 설정은 포트 80 또는 포트 443에서만 트래픽을 처리 할 수 있습니다. SSL을 사용하는 경우 ElasticBeanstalk로 인증서를 설정합니까? Nginx 측에서 요청을받지 못하면 Load Balancer에서 절대로 포워딩 할 수 없습니다. 로드 밸런서를 보려면 AWS 패널에서 EC2 ->로드 밸런서로 이동해야합니다. – jonzlin95
@ jonzlin95 우리는 포트 80을 통해 연결하고 있습니다. 'EC2 →로드 밸런서'에 나열된로드 밸런서는 없지만 놀랍지는 않습니다. 왜냐하면 우리는 ELB를 SingleInstance 환경 유형으로 만 사용하기 때문입니다. – zatziky