Pular para o conteúdo principal

TCP/UDP – Acesso via NGINX

atenção

⚠️ 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.

:::


nota

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