Nginx 뒤에서 coTurn 실행

7339 단어 nginxcoturn

소개




  • 리버스 프록시를 사용하여 내WebRTC application와 같이 Nginx 뒤에서 coTurn을 실행해 보겠습니다.

    와이어샤크



    Wireshark를 설치하여 지정된 포트가 지정된 프로토콜(TCP 또는 UDP)로 액세스되는지 확인합니다.

    sudo apt install wireshark
    


    내 계정에는 기본적으로 "/usr/bin/dumpcap"에 액세스할 수 있는 권한이 없기 때문에 캡처를 시작할 수 없습니다.



    sudo chmod +x /usr/bin/dumpcap
    


  • Fix for "couldn't run /usr/bin/dumpcap in child process: permission denied" - GitHub

  • 로드 밸런서



    this issue comment에 따르면 Nginx의 로드 밸런싱 기능으로 Nginx 뒤에서 coTurn을 실행할 수 있습니다.
  • Make coturn work reverse proxied through nginx #702 - coturn/coturn - GitHub

  • nginx.conf를 편집하기 전에 "/etc/hosts"에 로컬 도메인을 추가했습니다.

    192.168.XX.YYY local-webrtc.jp
    192.168.XX.YYY local-turn.jp
    


    그리고 coTurn의 turnserver.conf에서 UDP와 TCP 수신 포트를 하나로 결합합니다.

    turnserver.conf




    ...
    # TURN listener port for UDP and TCP (Default: 3478).
    # Note: actually, TLS & DTLS sessions can connect to the
    # "plain" TCP & UDP port(s), too - if allowed by configuration.
    #
    listening-port=3478
    
    # TURN listener port for TLS (Default: 5349).
    # Note: actually, "plain" TCP & UDP sessions can connect to the TLS & DTLS
    # port(s), too - if allowed by configuration. The TURN server
    # "automatically" recognizes the type of traffic. Actually, two listening
    # endpoints (the "plain" one and the "tls" one) are equivalent in terms of
    # functionality; but Coturn keeps both endpoints to satisfy the RFC 5766 specs.
    # For secure TCP connections, Coturn currently supports
    # TLS version 1.0, 1.1 and 1.2.
    # For secure UDP connections, Coturn supports DTLS version 1.
    #
    #tls-listening-port=5349
    ...
    


    nginx.conf




    user  nginx;
    worker_processes  auto;
    
    error_log  /var/log/nginx/error.log notice;
    pid        /var/run/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    stream {
        map $ssl_preread_server_name $name {
            local-webrtc.jp url_backend;
            local-turn.jp turn_server;
        }
        upstream url_backend {
            server 127.0.0.1:4444;
        }
    
        upstream turn_server {
            server 192.168.XX.YYY:3478;
        }
        server {
            listen 443;
            ssl_preread on;
            proxy_pass $name;
            proxy_buffer_size 10m;
        }
    }
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
        sendfile        on;
        keepalive_timeout  65;
        include /etc/nginx/conf.d/*.conf;
    }
    


    webrtcapp.conf




    map $http_origin $cors {
        'http://localhost:8080' $http_origin;
        'https://127.0.0.1:4444' $http_origin;
        'https://local-webrtc.jp:443' $http_origin;
    }
    ...
    server {
        listen 4444 ssl;
        server_name localhost;
    ...
    }
    


    443 포트는 웹 어플리케이션과 coTurn이 공유하기 때문에 coTurn과의 통신은 TCP 프로토콜을 사용하며,
  • Using nginx as HTTP load balancer
  • Module ngx_stream_core_module
  • Module ngx_http_upstream_module
  • Configuring HTTPS servers
  • TCP and UDP Load Balancing - Nginx Plus
  • 좋은 웹페이지 즐겨찾기