Proxy nginx

Quando o webman precisa fornecer acesso direto à rede externa, recomenda-se adicionar um proxy nginx na frente do webman. Isso oferece as seguintes vantagens:

  • Os recursos estáticos são tratados pelo nginx, permitindo que o webman se concentre na lógica de negócios
  • Múltiplas instâncias do webman podem compartilhar as portas 80 e 443, diferenciando sites pelo nome de domínio, permitindo vários sites em um único servidor
  • Permite a coexistência da arquitetura php-fpm e webman
  • O proxy nginx com SSL para https é mais simples e eficiente
  • Pode filtrar rigorosamente requisições ilegais da rede externa

Exemplo de proxy nginx

upstream webman {
    server 127.0.0.1:8787;
    keepalive 10240;
}

server {
  server_name dominio_do_site;
  listen 80;
  access_log off;
  # Importante: root deve apontar para o diretório public dentro do webman, não para o diretório raiz do webman
  root /your/webman/public;

  location / {
    try_files $uri @proxy;
  }

  location @proxy {
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_pass http://webman;
  }

  # Negar acesso a todos os arquivos que terminam em .php
  location ~ \.php$ {
      return 404;
  }

  # Permitir acesso ao diretório .well-known
  location ~ ^/\.well-known/ {
    allow all;
  }

  # Negar acesso a todos os arquivos ou diretórios que começam com .
  location ~ /\. {
      return 404;
  }

}

Geralmente, os desenvolvedores só precisam configurar server_name e root com os valores reais; os outros campos não precisam ser configurados.

Nota
É especialmente importante que a opção root aponte para o diretório public dentro do webman. Nunca configure para o diretório raiz do webman, caso contrário todos os seus arquivos podem ficar disponíveis para download e acesso pela internet, incluindo arquivos sensíveis como a configuração do banco de dados.