2013-11-09 3 views
0

다음 설정을 사용하여 역방향 프록시로 nginx 설정을했습니다.특정 크기로 Socket.IO 메시지를 삭제하는 Nginx 역방향 프록시

worker_processes 1; 

events { 
    worker_connections 1024; 
} 

http { 
    include mime.types; 

    default_type application/octet-stream; 
    keepalive_timeout 65; 

    map $http_upgrade $connection_upgrade { 
     default upgrade; 
     '' close; 
    } 

    server { 
     listen 8080; 

     server_name localhost; 

     add_header X-Cache-Status $upstream_cache_status; 

     location /node/ { 
      proxy_http_version 1.1; 
      proxy_pass http://127.0.0.1:8000/; 
      proxy_redirect off; 
      proxy_set_header Connection $connection_upgrade; 
      proxy_set_header Upgrade $http_upgrade; 
     } 
    } 
} 

다음 코드를 사용하여 연결 중입니다.

socket = io.connect('http://localhost:8080', { 
    'resource': 'node/socket.io' 
}); 

연결되면 정상적으로 작동하지만 15kb를 초과하는 메시지는 절대로 노드에서 수신되지 않습니다. Nginx는 액세스 또는 오류 로그에 아무 것도 기록하지 않습니다.

나는 그것이 nginx 구성 문제라고 확신하지만이 동작에 영향을주는 설정을 찾지 못했습니다. 나는 client_body_buffer_size size, proxy_buffers, proxy_buffer_size, tcp_nodelaylarge_client_header_buffers을 시도했습니다.

어떻게 이러한 메시지를 삭제하는 것을 멈추게 할 수 있습니까?

+1

디버그 로깅을 활성화 했습니까? 그것이 내가 문제를 진단하기 시작할 곳입니다. – Rami

+0

감사합니다 @ 라미, 디버그 로깅을 사용하면 많은 정보를 얻을 수 있지만 그 중 아무 것도 메시지를 삭제하는 것과 관련이없는 것으로 보입니다. –

+0

미안하지만 더 이상 도움이되지 못했습니다. – Rami

답변

1

문제는 프록시 버퍼와 관련이 있다고 생각합니다. 충분히 높게 설정하지 않았습니다. 다음은 약 5MB의 메시지를 처리하기위한 것입니다.

proxy_buffers 8 2m; 
proxy_buffer_size 10m; 
proxy_busy_buffers_size 10m; 
관련 문제