
Portanto, tenho um Synology NAS em casa com alguns serviços em execução que preciso estar acessíveis na WWW, mas compreensivelmente não quero abrir portas no meu IP doméstico para a Internet ampla (especialmente porque os serviços externos precisam acessar meu servidor na porta 443) - então decidi criar uma instância Always Free (conectividade de 0,48 Gbps, 1 CPU, 1 GB de RAM) no Oracle Cloud com Ubuntu 22.04 instalado e instalar o nginx nela, para acessar esses serviços de fora da minha rede doméstica. Em seguida, abri a porta do meu roteador apenas para o endereço IP da instância da nuvem.
Tenho experiência em gerenciar servidores Linux via SSH, mas esta é a primeira vez que brinco com o nginx em geral, muito menos com proxies reversos.
Durante os testes, deixei a porta aberta para todos os IPs, para poder testar o tráfego de entrada em meu laboratório diretamente e por meio de proxy reverso. É aqui que estou começando a lutar:
- quando eu acesso o phpMyAdmin rodando diretamente no servidor upstream (eu apenas consultohttps://pma.upstream.mydomain.xyz:openedPortno meu navegador), ele carrega instantaneamente - mesmo com o cache limpo
- quando eu acesso o phpMyAdmin em execução no servidor upstream através do proxy reverso (consultandohttps://pma.reverseproxy.meudominio.xyz:443no meu navegador), leva mais de um minuto para carregar depois de limpar o cache do navegador. Quando o cache já está carregado, não é tão lento (talvez 10s), mas ainda é muito mais lento do que consultar diretamente o servidor upstream (o que não será possível quando eu fechar a porta para uma Internet mais ampla). Depois de verificar o console do navegador, o que demora mais são PNGs minúsculos que o phpMyAdmin usa como ícones (cada imagem tem no máximo algumas centenas de bytes) e arquivos CSS/JS maiores (algumas dezenas de KB).
Quando acesso um site diferente no servidor upstream via proxy reverso, não parece estar tendo esses problemas, embora seja verdade que não está servindo tantos arquivos JS e PNG minúsculos, principalmente apenas texto
Abaixo está a configuração do bloco do meu servidor nginx. Alguém tem alguma idéia de onde posso estar errado? Qualquer conselho seria muito apreciado.
server {
listen 443 ssl http2;
server_name pma.reverseproxy.mydomain.xyz;
sendfile on;
tcp_nodelay on;
tcp_nopush on;
ssl_certificate /etc/letsencrypt/live/reverseproxy.mydomain.xyz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/reverseproxy.mydomain.xyz/privkey.pem;
resolver 1.1.1.1 8.8.8.8 valid=300s;
set $backend_server https://pma.upstream.mydomain.xyz:openedPort;
location / {
proxy_pass $backend_server;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host pma.upstream.mydomain.xyz;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffer_size 128k;
proxy_buffers 8 256k;
proxy_busy_buffers_size 256k;
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
proxy_read_timeout 20s;
}
}