Proxy Direto com Nginx para Acesso HTTPS

Introdução

Em ambientes corporativos, servidores CentOS em redes internas muitas vezes não posssuem acesso direto à internet, impossibilitando a instalação de pacotes via yum. Uma solução é configurar um servidor proxy nginx em uma máquina com acesso externo. Para proxy HTTP é simples, mas HTTPS requer tratamento especial, pois o nginx não pode encerrar SSL diretamente para sites não hospedados. Utiliza-se o módulo ngx_http_proxy_connect_module para lidar com requisições CONNECT, estabelecendo um túnel entre o cliente e o destino.

Instalação do Nginx com Suporte a CONNECT

Passo 1: Baixe o código fonte do nginx oficial.

Passo 2: Obtenha o módulo ngx_http_proxy_connect_module do GitHub, juntametne com um patch específico para a versão do nginx.

Passo 3: Extraia o nginx e crie um diretório de módulos:


tar -xzvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
mkdir -p extra_modules

Passo 4: Copie o módulo para extra_modules.

Passo 5: Aplique o patch ao nginx:


patch -p1 < nginx-connect.patch

Passo 6: Compile o nginx com suporte a SSL e o módulo CONNECT, assumindo que as dependências estão instaladas:


./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=./extra_modules/ngx_http_proxy_connect_module
make
make install

Configuração do Proxy

Edite o arquivo de configuração /usr/local/nginx/conf/nginx.conf com o seguinte bloco:


worker_processes auto;
events {
    worker_connections 1024;
}
http {
    server {
        listen 3128;
        resolver 8.8.8.8;
        proxy_connect;
        proxy_connect_allow 443 80;
        proxy_connect_timeout 30s;
        location / {
            proxy_pass $scheme://$host$request_uri;
            proxy_set_header Host $host;
            proxy_buffer_size 16k;
        }
    }
}

Validação

Teste HTTP

Execute:


curl -x http://localhost:3128 http://example.com -v

Verifique a resposta 200 OK sem túnel CONNECT.

Teste HTTPS

Execute:


curl -x http://localhost:3128 https://example.com -v

Observe a negociação TLS após a requisição CONNECT bem-sucedida.

Configurando o Proxy no CentOS

Defina as variáveis de ambiente para o servidor proxy (ex: IP 192.168.1.100):


export http_proxy="http://192.168.1.100:3128"
export https_proxy="http://192.168.1.100:3128"

Adicione essas linhas ao ~/.bashrc para persistência. Agora, o yum e outros comandos usarão o proxy para acessar repositórios externos.

Tags: nginx proxy-connect https-proxy CentOS yum

Publicado em 6-6 20:40 por Thomas