Estoy intentando alojar un controlador Unifi detrás de un proxy inverso nginx. Esto funciona bien excepto que tengo problemas con el protocolo STUN.
Estoy usando nginx 1.18 en Ubuntu 20.04. Cuando verifico los módulos cargados para nginx, aparecen --with-stream=dynamic
como disponibles, pero cuando intento usarlos: listen 3478 udp;
en el bloque de mi servidor falla y aparece el siguiente mensaje de error:
nginx: [emerg] invalid parameter "udp" in /etc/nginx/sites-enabled/stream_unifi.example.com:7
La stream_unifi.example.com
configuración se carga en un stream
contexto:
stream {
include /etc/nginx/sites-enabled/stream_*;
}
¿Hay algo que me falta o necesito compilar nginx con algunos indicadores especiales yo mismo?
¡Gracias!
Salida 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#
Respuesta1
Hubo algunas cosas mal con mi configuración y RichardSmith me indicó la dirección correcta.
Mi nginx.conf
tenía los siguientes bloques:
http {
[other configuration options]
include /etc/nginx/sites-enabled/*;
}
stream {
[other configuration options]
include /etc/nginx/sites-enabled/*;
}
- Vinculé simbólicamente mi "configuración de transmisión" de
/etc/nginx/sites-available/stream_unifi.example.com
a/etc/nginx/sites_enabled/stream_unifi.example.com
. Esto provocó que esta configuración fuera recogida tanto porhttp
elstream
bloque como comonginx.conf
se muestra arriba. La solución es cambiar la inclusión en elstream
bloque para que se vea así:
stream {
include /etc/nginx/stream-sites-enabled/*;
}
Luego cree este stream-sites-enabled
directorio y establezca un enlace simbólico /etc/nginx/sites-available/stream_unifi.example.com
a ese directorio.
- La configuración de la transmisión en sí (
stream_unifi.example.com
) tuvo algunos problemas y debe verse así:
upstream unifi_stun {
server 127.0.0.1:3478;
}
server {
listen 3478 udp;
proxy_pass unifi_stun;
proxy_responses 0;
}
Espero que también sea útil para alguien más.