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.