proxy de nginx

Cuando webman necesita proporcionar acceso externo directamente, se recomienda agregar un proxy de nginx delante de webman, lo que ofrece los siguientes beneficios.

  • Los recursos estáticos son gestionados por nginx, permitiendo que webman se concentre en el procesamiento de la lógica de negocio.
  • Permite que múltiples webman compartan los puertos 80 y 443, diferenciando diferentes sitios a través de nombres de dominio, logrando desplegar múltiples sitios en un solo servidor.
  • Puede lograr la coexistencia de php-fpm y la arquitectura de webman.
  • El proxy de nginx implementa ssl para https, de manera más simple y eficiente.
  • Puede filtrar estrictamente algunas solicitudes no válidas de la red externa.

Ejemplo de proxy de nginx

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

server {
  server_name nombre_del_dominio;
  listen 80;
  access_log off;
  # Nota: esta opción debe configurarse como el directorio public de webman, no como el directorio raíz de 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;
      }
  }

  # Denegar el acceso a todos los archivos que terminan en .php
  location ~ \.php$ {
      return 404;
  }

  # Permitir el acceso al directorio .well-known
  location ~ ^/\.well-known/ {
    allow all;
  }

  # Denegar el acceso a todos los archivos o directorios que comienzan con .
  location ~ /\. {
      return 404;
  }

}

En general, en la configuración anterior, el desarrollador solo necesita configurar server_name y root con los valores reales; los otros campos no necesitan configurarse.

Nota
Es especialmente importante que la opción root se configure como el directorio public de webman, nunca debe configurarse directamente como el directorio de webman, de lo contrario, todos tus archivos pueden ser accesibles para descarga desde la red externa, incluidos archivos sensibles como la configuración de la base de datos.