nginx代理

Quando Webman deve fornire accesso diretto a Internet, si consiglia di aggiungere un proxy nginx davanti a Webman, il che ha i seguenti vantaggi.

  • Le risorse statiche sono gestite da nginx, consentendo a Webman di concentrarsi sulla logica di business.
  • Permette a più Webman di condividere le porte 80 e 443, distinguendo i diversi siti tramite nome di dominio, realizzando la distribuzione di più siti su un singolo server.
  • È possibile realizzare la coesistenza tra php-fpm e architettura Webman.
  • Il proxy nginx implementa ssl per https, rendendo il tutto più semplice ed efficiente.
  • Permette di filtrare rigorosamente alcune richieste illegali da Internet.

Esempio di proxy nginx

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

server {
  server_name nome_del_dominio_del_sito;
  listen 80;
  access_log off;
  # Attenzione, qui deve necessariamente essere la directory public di Webman, non la directory radice di 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;
      }
  }

  # Rifiuta l'accesso a tutti i file che terminano con .php
  location ~ \.php$ {
      return 404;
  }

  # Consente l'accesso alla directory .well-known
  location ~ ^/\.well-known/ {
    allow all;
  }

  # Rifiuta l'accesso a tutti i file o directory che iniziano con .
  location ~ /\. {
      return 404;
  }

}

In generale, i sviluppatori devono solo configurare server_name e root con i valori effettivi; gli altri campi non necessitano di configurazione.

Attenzione
È particolarmente importante che l'opzione root sia configurata sulla directory public di Webman; non impostarla direttamente sulla directory di Webman, altrimenti tutti i tuoi file potrebbero essere scaricati o accessibili da Internet, inclusi file sensibili come la configurazione del database.