TCP/UDP – Acesso via NGINX
⚠️ Todas as configurações deste manual são exemplos simples e hipotéticos. Adapte conforme a topologia do seu ambiente.
🔁 Introdução
O módulo stream
do NGINX permite o redirecionamento de tráfego TCP e UDP diretamente na camada de transporte.
Isso é útil para publicar serviços como:
- MySQL / PostgreSQL (TCP)
- RDP / FTP (TCP)
- SNMP (UDP)
🛠️ Etapa 1 – Editando o nginx-jelastic.conf
Abra o arquivo /etc/nginx/nginx-jelastic.conf
e adicione o seguinte fora do bloco http {}
, geralmente no final do arquivo:
stream {
log_format basic '$remote_addr $server_port [$time_local] $protocol $status $bytes_sent $bytes_received $session_time';
include /etc/nginx/conf.d/stream/*.conf;
}
💾 Salve após a edição.
📁 Etapa 2 – Criando o diretório de configuração
Crie a pasta de configurações do stream
:
mkdir -p /etc/nginx/conf.d/stream
⚙️ Configurando o Proxy TCP
Este exemplo redireciona conexões MySQL (porta 3306) através do NGINX para outro servidor interno:
# Arquivo: /etc/nginx/conf.d/stream/mysql_tcp.conf
server {
listen 33090;
listen [::]:33090;
proxy_pass 10.101.10.10:3306;
access_log /var/log/nginx/mysql_tcp.log basic;
}
⚙️ Configurando o Proxy UDP
Este exemplo redireciona SNMP (porta 161) para um servidor interno via UDP:
# Arquivo: /etc/nginx/conf.d/stream/snmp_udp.conf
server {
listen 161 udp;
listen [::]:161 udp;
proxy_pass 10.10.10.50:161;
access_log /var/log/nginx/snmp_udp.log basic;
}
:::tip
🧩 Entendendo o bloco server
(TCP/UDP)
Cada configuração de redirecionamento utiliza um bloco server
dentro do módulo stream
. Abaixo explicamos, de forma objetiva, o que representa cada diretiva usada:
server {
listen 33090;
listen [::]:33090;
proxy_pass 10.101.10.10:3306;
access_log /var/log/nginx/mysql_tcp.log basic;
}
🔈 listen
A diretiva listen
informa em qual porta o NGINX irá escutar conexões externas.
É possível usar uma porta diferente da original da aplicação. Por exemplo, se o serviço MySQL roda na porta 3306
, você pode configurar o NGINX para escutar na porta 33090
externamente o que ajuda na segurança de portas padrões.
Além disso, o listen [::]:PORTA
permite escutar conexões IPv6 na mesma porta.
✅ Isso é útil para publicar serviços internos usando uma porta pública.
🔁 proxy_pass
Define o endereço IP e porta de destino interno para onde o NGINX irá encaminhar a conexão recebida.
Neste exemplo, o tráfego que chega na porta 33090
será redirecionado para o MySQL rodando em 10.101.10.10:3306
.
📝 access_log
Registra os acessos ao serviço redirecionado, utilizando o formato de log definido anteriormente (basic
).
O caminho do arquivo de log pode ser personalizado conforme o serviço, facilitando a análise posterior.
:::
Certifique-se de liberar no firewall as portas configuradas no listen do NGINX
🔄 Etapa 3 – Reiniciando o NGINX
Após a configuração, reinicie o NGINX para aplicar as alterações
✅ Exemplo de uso externo
🎯 Acessando MySQL (TCP)
- IP do NGINX:
203.0.113.10
- Porta externa:
33090
mysql -h 203.0.113.10 -P 33090 -u root -p