NGINX 웹 소켓 대리 로

4697 단어 linux
조판 이 형편없다.직접 복사 한 것 은 원문 을 보 세 요.https://www.nginx.com/blog/websocket-nginx/
이 웹 페이지 소켓 프로 토 콜 은 클 라 이언 트 와 서버 간 의 실시 간 양 방향 통신 을 지원 하 는 웹 프로그램 을 만 드 는 방식 을 제공 합 니 다.웹 소켓 의 일부분 은 이러한 유형의 응용 프로그램 을 개발 하 는 것 이 이전에 사용 할 수 있 었 던 방법 보다 더욱 쉬 워 졌 다.대부분의 현대 브 라 우 저 는 Chrome, Firefox, Internet Explorer, Opera, Safari 를 포함 한 웹 소켓 을 지원 하 며, 점점 더 많은 서버 응용 프로그램 프레임 워 크 도 현재 웹 소켓 을 지원 하고 있다.
기업 의 생산 용도 에 대해 서 는 여러 개의 웹 소켓 서버 가 성능 과 높 은 가용성 을 실현 해 야 하 며, 웹 소켓 프로 토 콜 의 부하 균형 층 을 알 아야 한다. NGINX 는 1.3 버 전부터 웹 소켓 을 지원 하고 역방향 에이전트 로 서 웹 소켓 의 부하 균형 응용 을 할 수 있다.(모든 버 전의 NGINX Plus 도 WebSocket 을 지원 합 니 다.)
NGINX 확장 성에 대한 최신 성능 테스트 를 보고 부하 균형 웹 소켓 으로 연결 합 니 다.
웹 소켓 프로 토 콜 은 HTTP 프로 토 콜 과 다 르 지만 웹 소켓 악 수 는 HTTP 와 호 환 되 며 HTTP 업그레이드 도 구 를 사용 하면 연결 을 HTTP 에서 웹 소켓 으로 업그레이드 합 니 다.이것 은 웹 소켓 응용 프로그램 이 기 존의 기초 구조 에 더욱 쉽게 적응 할 수 있 도록 한다.예 를 들 어 웹 소켓 응용 프로그램 은 표준 HTTP 포트 80 과 443 을 사용 하여 기 존의 방화벽 규칙 을 사용 할 수 있다.
웹 소켓 응용 프로그램 은 클 라 이언 트 와 서버 간 에 장시간 실행 되 는 연결 을 유지 하여 실시 간 응용 프로그램 개발 에 도움 이 된다.HTTP 에서 WebSocket 으로 연결 하 는 HTTP 업그레이드 메커니즘 은 Upgrade 와 Connection 헤드 를 사용 합 니 다.역방향 프 록 시 서버 는 웹 소켓 을 지원 할 때 도전 에 직면 합 니 다.하 나 는 웹 소켓 이 점프 프로 토 콜 이기 때문에 프 록 시 서버 가 클 라 이언 트 의 업그레이드 요청 을 차단 할 때 백 엔 드 서버 에 자신의 업그레이드 요청 을 보 내야 합 니 다. 해당 하 는 헤더 파일 을 포함 합 니 다.또한 웹 소켓 연결 이 장기 적 으로 존재 하기 때문에 HTTP 가 사용 하 는 전형 적 인 단기 연결 과 달리 역방향 프 록 시 는 이 연결 을 닫 는 것 이 아니 라 열 수 있 도록 해 야 합 니 다. 빈 상태 인 것 같 기 때 문 입 니 다.
클 라 이언 트 와 백 엔 드 서버 사이 에 터널 을 만 들 수 있 고 NGINX 는 웹 소켓 을 지원 합 니 다.NGINX 가 클 라 이언 트 에서 백 엔 드 서버 로 업그레이드 요청 을 보 내 는 것 에 대해 서 는 Upgrade 와 Connection 제목 을 명 확 히 설정 해 야 합 니 다. 다음 과 같 습 니 다.
location /wsapp/ { proxy_pass http://wsbackend; proxy http version 1.1; proxy set header Upgrade $http upgrade; proxy set header Connection "upgrade";} 완료 되면 NGINX 는 이 를 WebSocket 연결 로 처리 합 니 다.
NGINX 웹 소켓 예제
웹 소켓 에이전트 로 NGINX 를 보 여 주 는 현장 예제 다.이 예제 에 서 는 Node. js 기반 웹 소켓 을 사용 합 니 다.NGINX 는 ws 와 Node. js 를 사용 하 는 간단 한 웹 소켓 애플 리 케 이 션 의 역방향 에이전트 입 니 다.이러한 설명 은 이미 우 분투 13.10 과 CentOS 6.5 를 통 해 테스트 가 진 행 됐 지만, 다른 운영 체제 와 버 전에 대한 조정 이 필요 할 수 있다.이 예시 에 대해 웹 소켓 서버 의 IP 주 소 는 192.168.100.10 이 고 NGINX 서버 의 IP 주 소 는 192.168.100.20 이다.
Node. js 와 npm 가 설치 되 어 있 지 않 으 면 다음 명령 을 실행 하 십시오.
데 비 안과 Ubuntu 에 대해:
$sudo apt - get install nodejs npm 는 RHEL 과 CentOS 에 대해:
$sudo yum install nodejs npm Node. js 는 Ubuntu 와 nodeCentOS 에 nodejs 를 설치 합 니 다.이 예 는 node 를 사용 하기 때문에 Ubuntu 에서 우 리 는 심 볼 릭 링크 nodejs 에서 node 까지 만들어 야 합 니 다.
ln − s / usr / bin / nodejs / usr / local / bin / node 는 ws 를 설치 하려 면 다음 명령 을 실행 하 십시오: sudo npm install ws 주의: 오류 메 시 지 를 받 으 면 "오류: 레 지 스 트 에서 가 져 올 수 없습니다: ws" 다음 명령 을 실행 하여 문 제 를 해결 하 십시오.
$ sudo npm config set registry http://registry.npmjs.org/ 그리고 sudo npm install ws 에서 명령 을 다시 실행 합 니 다.
ws 클 라 이언 트 에 사용 할 프로그램 / root / nodemodules / ws / bin / wscat 가 함께 제공 하지만 서버 로 서 의 프로그램 을 만들어 야 합 니 다.server. js 라 는 파일 을 만 듭 니 다. 다음 내용 을 포함 합 니 다.
console.log(“Server started”); var Msg = ”; var WebSocketServer = require(‘ws’).Server , wss = new WebSocketServer({port: 8010}); wss.on(‘connection’, function(ws) { ws.on(‘message’, function(message) { console.log(‘Received from client: %s’, message); ws.send(‘Server received from client: ’ + message); }); }); 서버 프로그램 을 실행 하려 면 다음 명령 을 실행 하 십시오. $node server. js 서버 에서 초기 'Server started' 메 시 지 를 인쇄 한 다음 포트 8010 에서 클 라 이언 트 가 연결 되 기 를 기다 리 십시오.클 라 이언 트 의 요청 을 받 았 을 때, 클 라 이언 트 가 받 은 메 시 지 를 포함 하 는 메 시 지 를 보 냅 니 다.NGINX 가 이 요청 을 대리 하려 면 다음 설정 을 만 듭 니 다.
http { map httpupgrade connection_upgrade { default upgrade; ” close; }
upstream websocket {
    server 192.168.100.10:8010;
}

server {
    listen 8020;
    location / {
        proxy_pass http://websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

} NGINX 탐지 포트 8020, 백 엔 드 웹 소켓 서버 에 프 록 시 요청 을 보 냅 니 다.이 proxyset_header 명령 은 NGINX 가 웹 소켓 프로 토 콜 을 잘 처리 하도록 합 니 다.
서버 를 테스트 하려 면 wscat 를 클 라 이언 트 로 실행 합 니 다.
$ /root/node_modules / ws / bin / wscat – connect ws: / 192.168.100.20: 8020 wscat 는 NGINX 프 록 시 를 통 해 웹 소켓 서버 에 연결 합 니 다.서버 에 보 내기 위해 wcat 메 시 지 를 입력 하면 서버 에서 보 여 준 다음 클 라 이언 트 에 서버 에서 온 메 시 지 를 표시 합 니 다.다음은 예제 대화 입 니 다.
서버: 고객: $node server. js 서버 시작
wscat --connect ws://192.168.100.20:8020

Connected (press CTRL+C to quit)
Hello Received from client: Hello < Server received from client: Hello 여기 서 클 라 이언 트 와 서버 가 프 록 시 로 서 NGINX 를 통 해 통신 할 수 있 고 클 라 이언 트 나 서버 가 연결 이 끊 길 때 까지 메 시 지 를 계속 보 낼 수 있 습 니 다.NGINX 가 웹 소켓 을 정확하게 처리 하 는 데 필요 한 것 은 헤드 파일 을 정확하게 설정 하여 HTTP 에서 웹 소켓 으로 연결 하 는 업그레이드 요청 을 처리 하 는 것 입 니 다.

좋은 웹페이지 즐겨찾기