Tráfego UDP de proxy reverso nginx (parâmetro "udp" inválido)

Tráfego UDP de proxy reverso nginx (parâmetro "udp" inválido)

Estou tentando hospedar um controlador Unifi atrás de um proxy reverso nginx. Isso funciona bem, exceto que estou tendo problemas com o protocolo STUN.

Estou usando o nginx 1.18 no Ubuntu 20.04. Quando verifico os módulos carregados para nginx, ele é listado --with-stream=dynamiccomo disponível, mas quando tento usar: listen 3478 udp;no meu bloco de servidor ele falha com a seguinte mensagem de erro:

nginx: [emerg] invalid parameter "udp" in /etc/nginx/sites-enabled/stream_unifi.example.com:7

A stream_unifi.example.comconfiguração é carregada em um streamcontexto:

stream {
        include /etc/nginx/sites-enabled/stream_*;
}

Há alguma coisa que estou faltando ou preciso compilar o nginx com alguns sinalizadores especiais?

Obrigado!


Saída completa:

root@server:/etc/nginx/modules-available# nginx -V
nginx version: nginx/1.18.0 (Ubuntu)
built with OpenSSL 1.1.1f  31 Mar 2020
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-5J5hor/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module
root@server:/etc/nginx/modules-available# cat ../sites-available/stream_unifi.example.com
# Unifi STUN UDP Traffic
upstream unifi_stun {
        server 127.0.0.1:3478;
}

server {
    listen 3478 udp;
    include /etc/nginx/snippets/acmetool.conf;

    location / {
                proxy_pass https://unifi_stun;
        proxy_responses 0;
    }
}
root@server:/etc/nginx/modules-available# nginx -t
nginx: [emerg] invalid parameter "udp" in /etc/nginx/sites-enabled/stream_unifi.example.com:7
nginx: configuration file /etc/nginx/nginx.conf test failed
root@server:/etc/nginx/modules-available#

Responder1

Havia algumas coisas erradas com minha configuração e RichardSmith me indicou a direção certa.

O meu nginx.conftinha os seguintes blocos:

http {
        [other configuration options]
        include /etc/nginx/sites-enabled/*;
}

stream {
        [other configuration options]
        include /etc/nginx/sites-enabled/*;
}
  1. Eu vinculei minha "configuração de fluxo" de /etc/nginx/sites-available/stream_unifi.example.compara /etc/nginx/sites_enabled/stream_unifi.example.com. Isso fez com que essa configuração fosse escolhida tanto pelo bloco httpquanto pelo streambloco nginx.confmostrado acima. A correção é alterar a inclusão no streambloco para ficar assim:
stream {
        include /etc/nginx/stream-sites-enabled/*;
}

Em seguida, crie este stream-sites-enableddiretório e crie um link simbólico /etc/nginx/sites-available/stream_unifi.example.compara esse diretório.

  1. A própria configuração do stream ( stream_unifi.example.com) teve alguns problemas e deve ficar assim:
upstream unifi_stun {
        server 127.0.0.1:3478;
}

server {
    listen 3478 udp;
    proxy_pass unifi_stun;
    proxy_responses 0;
}

Espero que isso seja útil para outra pessoa também.

informação relacionada