nginx 퍼 가기 websocket 보고 400 오류 해결

1861 단어 이상 해결 편
이 는 개인 서버 에 여러 개의 항목 이 있 기 때문에 2 급 도 메 인 이름 을 설정 하고 2 급 도 메 인 이름 을 리 트 윗 해 야 한 다 는 것 을 의미한다. 리 트 윗 작업 은 곧 유명한 nginx 를 채택 할 것 이다.그 전에 모든 프로젝트 가 리 트 윗 을 실행 하 는 데 문제 가 없 었 습 니 다. 그러나 오늘 웹 소켓 통신 이 있 는 프로젝트 를 배치 할 때 예상 치 못 한 오류 가 발생 했 습 니 다. 오류 메 시 지 는 다음 과 같 습 니 다.
1failed: Error during WebSocket handshake: Unexpected response code: 400 。이 오 류 는 로 컬 테스트 환경 과 비 nginx 퍼 가기 에 문제 가 없 으 므 로 nginx 퍼 가기 부분 에 문제 가 발생 해 야 한다 고 추정 합 니 다.
그래서 구 글 의 도움 으로 socket. io 공식 issues 에서 이 문제 에 대한 토론, 링크 를 보 았 습 니 다.https://github.com/socketio/socket.io/issues/1942
해결 방안 은 토론 구역 에서 말 한 방안 을 보 았 습 니 다. 문 제 는 nginx 설정 파일 에 있 습 니 다. nginx. conf 파일 을 수정 해 야 합 니 다.Liux 터미널 에서 vim / etc / nginx / nginx. conf 를 두 드 리 고 location 이라는 위 치 를 찾 으 면 설정 파일 은 다음 과 같 습 니 다.
server {
        listen       80;
        server_name  school.godotdotdot.com;
        charset utf-8;

        location / {
            proxy_pass http://127.0.0.1:3000;
            proxy_set_header Host $host;
            proxy_http_version 1.1; 
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_connect_timeout 60;
            proxy_read_timeout 600;
            proxy_send_timeout 600;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
           root   html;
        }

    }

그 중에서 가장 중요 한 것 은 아래 세 줄 입 니 다.
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 그 중 첫 번 째 줄 은 nginx 에 게 HTTP / 1.1 통신 프로 토 콜 을 사용 하 라 고 알려 주 는 것 입 니 다. 이것 은 websocket 에서 사용 해 야 할 프로 토 콜 입 니 다.
두 번 째 줄 과 세 번 째 줄 은 nginx 에 게 WebSocket 을 사용 하려 면 http 업그레이드 요청 에 응답 하 라 고 알려 줍 니 다.

좋은 웹페이지 즐겨찾기