Proxy Nginx
Quando webman deve essere accessibile direttamente dalla rete esterna, si consiglia di aggiungere un proxy nginx davanti a webman. Questo offre i seguenti vantaggi:
- Le risorse statiche sono gestite da nginx, consentendo a webman di concentrarsi sulla logica di business
- Più istanze webman possono condividere le porte 80 e 443, distinguendo i siti per nome di dominio, permettendo più siti su un singolo server
- Permette la coexistenza dell'architettura php-fpm e webman
- Il proxy nginx con SSL per https è più semplice ed efficiente
- Può filtrare rigorosamente le richieste illegali dalla rete esterna
Esempio di proxy nginx
upstream webman {
server 127.0.0.1:8787;
keepalive 10240;
}
server {
server_name dominio_del_sito;
listen 80;
access_log off;
# Importante: root deve puntare alla directory public sotto webman, non alla directory radice di 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;
}
# Nega l'accesso a tutti i file che terminano con .php
location ~ \.php$ {
return 404;
}
# Consenti l'accesso alla directory .well-known
location ~ ^/\.well-known/ {
allow all;
}
# Nega l'accesso a tutti i file o directory che iniziano con .
location ~ /\. {
return 404;
}
}
In genere, gli sviluppatori devono solo configurare server_name e root con i valori effettivi; gli altri campi non richiedono configurazione.
Nota
È particolarmente importante che l'opzione root punti alla directory public sotto webman. Non impostarla mai sulla directory radice di webman, altrimenti tutti i file potrebbero essere scaricabili e accessibili da Internet, inclusi file sensibili come la configurazione del database.