nginx websocket ip_해시 규칙

3669 단어 데이터 뱅 크

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {

    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;
    keepalive_timeout  65;

    upstream webSockerNginx {
    ip_hash;  
    server 172.16.55.62:8081 weight=10;
    server 192.168.8.23:8083 weight=10;
    }

    server {
        listen       8080;
        server_name  webSockerNginxServer;


        location / {
        #支持websocket
        proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection  "upgrade";
        #解决 前端403问题
        proxy_set_header  Origin "";

        #解决IP问题
        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_connect_timeout 3600s; #配置点1
        proxy_read_timeout 3600s; #配置点2,如果没效,可以考虑这个时间配置长一点
        proxy_send_timeout 3600s; #配置点3
        proxy_pass  http://webSockerNginx;

        }

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

    }


}



백 엔 드 코드
springboot + spring - websocket 데모 다운로드
https://download.csdn.net/download/whiteforever/10630375
 
프로젝트 를 다운로드 한 후 서로 다른 네트워크 에 각각 이 demo 프로젝트 를 배치 합 니 다.
프로젝트 에서 환경 변수 에 따라 시스템 변 수 를 설정 합 니 다.
spring.profiles.active=dev8081  window ip 172.16.55.62 에 배치
spring. profiles. active = dev 8082 는 Liux ip 192.168.8.23 에 배치 되 었 습 니 다.
nginx websocket ip_hash规则_第1张图片 프로젝트 를 실행 가능 한 jar 패키지 로 만들어 각각 IP 네트워크 에 배 치 된 서버 로 시작 합 니 다.
시작 nginx
window 에서 웹 socket 페이지 를 방문 한 후 서버 의 로 그 를 봅 니 다.
http://172.16.55.62:8080/html/user.html
nginx websocket ip_hash规则_第2张图片
이 웹 소켓 이 Liux 가 시작 한 서버 에 연결 되 어 있 음 을 표시 합 니 다.
 
Liux 에서 websocket 연결 Liux 명령 을 열 면 다음 과 같 습 니 다.
curl --include      --no-buffer      --header "Connection: Upgrade"      --header "Upgrade: websocket"      --header "Host: example.com:80"      --header "Origin: http://example.com:80"      --header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ=="      --header "Sec-WebSocket-Version: 13"   http://172.16.55.62:8080/websocket/socketServer

nginx websocket ip_hash规则_第3张图片
Liux 에서 열 린 websocket 이 windows 가 시작 하 는 서버 에 연결 되 어 있 는 것 을 발견 하 였 습 니 다.
이로써 웹 소켓 은 nginx 를 통 해 부하 균형 을 이 루 는 효과 가 실현 되 었 다.
 
주:
이 방안 의 단점 은 다음 과 같다.
1.nginx 를 통한 ip 이 니까.hash 가 부하 하기 때문에 nginx 는 구조의 첫 번 째 입구 로 해 야 합 니 다. 그렇지 않 으 면 IP 를 얻 지 못 할 수도 있 습 니 다.
 
 

좋은 웹페이지 즐겨찾기