Proxy nginx
Quando o webman precisa fornecer acesso externo diretamente, é recomendado adicionar um proxy nginx na frente do webman, o que traz os seguintes benefícios.
- Recursos estáticos são tratados pelo nginx, permitindo que o webman se concentre no processamento da lógica de negócios
- Permite que múltiplos webman compartilhem as portas 80 e 443, diferenciando diferentes sites por meio de nomes de domínio, permitindo a implementação de múltiplos sites em um único servidor
- Capacidade de coexistência entre php-fpm e a arquitetura webman
- O proxy nginx para ssl implementa https de forma mais simples e eficiente
- Capacidade de filtrar rigorosamente algumas requisições ilegais da internet
Exemplo de Proxy nginx
upstream webman {
server 127.0.0.1:8787;
keepalive 10240;
}
server {
server_name domínio_do_site;
listen 80;
access_log off;
# Atenção, aqui deve ser o diretório public do webman, não o diretório raiz do webman
root /your/webman/public;
location ^~ / {
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 "";
if (!-e $request_filename){
proxy_pass http://webman;
}
}
# Negar acesso a todos os arquivos que terminam com .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;
}
}
De modo geral, essa configuração só precisa que o desenvolvedor defina server_name e root com os valores reais, e os outros campos não precisam ser configurados.
Atenção
É especialmente importante que a opção root seja configurada para o diretório public do webman, nunca deve ser configurada diretamente para o diretório do webman, caso contrário, todos os seus arquivos podem ser baixados e acessados externamente, incluindo arquivos sensíveis como a configuração do banco de dados.