вступление

Я попробую запустить coTurn за Nginx, как мой WebRTC-приложение с обратным прокси.


Wireshark

Установите Wireshark, чтобы узнать, осуществляется ли доступ к указанному порту по указанному протоколу (TCP или UDP).

sudo apt install wireshark
Войти в полноэкранный режим

Выйти из полноэкранного режима

Поскольку у моей учетной записи не было разрешения на доступ к «/usr/bin/dumpcap» по умолчанию, я не мог начать захват.

Описание изображения

sudo chmod +x /usr/bin/dumpcap
Войти в полноэкранный режим

Выйти из полноэкранного режима


Балансировщик нагрузки

Согласно комментариям к этой проблеме, я могу запустить coTurn за Nginx с помощью функции балансировки нагрузки Nginx.

Прежде чем редактировать nginx.conf, я добавил локальные домены в «/etc/hosts».

192.168.XX.YYY local-webrtc.jp
192.168.XX.YYY local-turn.jp
Войти в полноэкранный режим

Выйти из полноэкранного режима

И объедините порты прослушивания UDP и TCP в один в файле turnserver.conf coTurn.


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_origin;
    ' $http_origin;
    ' $http_origin;
}
...
server {
    listen 4444 ssl;
    server_name localhost;
...
}
Войти в полноэкранный режим

Выйти из полноэкранного режима

Поскольку порт 443 является общим для веб-приложения и coTurn, для связи с coTurn используется протокол TCP.