Server Web · 3 min read · Dec 27, 2025
Nginx Catch-All Host Come Front End Per Apache Per ISPConfig 3 Su Debian Lenny
Nginx Catch-All Host Come Front End Per Apache Per ISPConfig 3 Su Debian Lenny
By Nedim Hadzimahmutovic < [email protected] >
Versione: v1.1
Ultima Modifica: 19 Maggio 2010
Introduzione
Apache è sempre stato il server web di scelta per me. È una vera bestia quando si tratta di utilizzo delle risorse, specialmente in un ambiente a risorse limitate come un VPS. Ho iniziato a giocare con Nginx, un server web leggero e ad alte prestazioni. La mia area di interesse era far funzionare Nginx come proxy inverso e farlo funzionare in un ambiente Apache/ISPConfig 3.
Il Problema
Sono un utente di OpenVZ, apache2-mpm-itk, mod_php. Apache mpm-itk non supporta FastCGI. Questo problema aumenta drammaticamente se si utilizza un sistema operativo a 64 bit, poiché Apache utilizzerà ora molta più memoria (i sistemi a 32 bit hanno puntatori a 4 byte, mentre i sistemi a 64 bit hanno puntatori a 8 byte). Ho iniziato a ricevere errori di limite KMEMSIZE e Apache era la ragione di ciò. Apache ha reso il mio VPS inutilizzabile, quindi ho dovuto cercare un’alternativa.
La Soluzione
Nginx era la risposta, ma sono un utente di ISPConfig che supporta solo Apache e se avessi trovato un modo per aggirare questo, non ci sarebbe stato modo di gestire manualmente ogni host virtuale. La soluzione era impostare Nginx come host catch-all come front-end e fare da proxy ad Apache, che verrà eseguito nel back-end su una porta diversa. In questo modo Nginx servirà i file statici e PHP sarà lasciato ad Apache. Puoi anche lasciare un intero dominio a Nginx se vuoi, basta mettere l’host virtuale di quel dominio prima del vhost predefinito. Un passo ulteriore sarebbe eseguire un ambiente chroot a 32 bit sopra il sistema operativo a 64 bit e installare Apache a 32 bit, ma questo non sarà trattato in questo tutorial.
Configurare Apache
Configura Apache per eseguire sulla porta 82 in /etc/apache2/ports.conf e in tutti i tuoi host virtuali. Per semplificare, usa il comando sed:
# sed -ie 's/YOUR-IP:80/YOUR-IP:82/g' /etc/apache2/sites-available/*.vhost Presumo che il tuo host virtuale sia basato su IP - il tuo vhost potrebbe avere *:80 invece di IP:80.
Il comando sed creerà file di backup dei tuoi file .vhost che avranno estensione .vhoste. Puoi spostare i file di backup vhost:
mkdir /root/apache2_vhost_backup/mv /etc/apache2/sites-available/*.vhoste /root/apache2_vhost_backup/Riavvia Apache e usa netstat per controllare se è in esecuzione sulla porta 82:
tcp 0 0 0.0.0.0:82 0.0.0.0:* LISTEN 7630/apache2 Ora devi cambiare i modelli Apache di ISPConfig. Copiali nella tua directory conf-custom:
# cd /usr/local/ispconfig/server/ # cp conf/apache_ispconfig.conf.master conf-custom/ # cp conf/vhost.conf.master conf-custom/ Apri i due file e cambia :80 in :82. Solo per essere sicuro, esegui il comando grep e controlla se l’output corrisponde:
# grep :82 -i /usr/local/ispconfig/server/conf-custom/* /usr/local/ispconfig/server/conf-custom/apache_ispconfig.conf.master:NameVirtualHost {tmpl_var name=”ip_address”}:82
/usr/local/ispconfig/server/conf-custom/vhost.conf.master: :82>
Vedrai tutte le richieste come provenienti da localhost (127.0.0.1). Per vedere l’indirizzo IP reale degli utenti, dovrai installare libapache2-mod-rpaf:
# apt-get install libapache2-mod-rpaf Aggiungi quanto segue a /etc/apache2/apache2.conf:
# nano /etc/apache2/apache2.confRPAFsethostname On
RPAFproxy_ips 127.0.0.1 YOUR_IP_ADDRESSInstallare e Configurare Nginx
Abilita il repository lenny-backports, troverai le istruzioni su http://backports.org/.
apt-get install nginx Rimuovi il vhost predefinito:
# rm /etc/nginx/sites-available/default Apri il file:
# nano /etc/nginx/sites-available/default Aggiungi il seguente contenuto al file:
server {
listen 80 default;
server_name _;
server_name_in_redirect off;
resolver 127.0.0.1;
#### www. redirect - tutti i domini che iniziano con www verranno reindirizzati a http://domain. ####
if ($host ~* ^(www\.)(.+)) {
set $rawdomain $2;
rewrite ^/(.*)$ http://$rawdomain/$1 permanent;
}
access_log /var/log/ispconfig/httpd/$host/access.log;
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|html|htm|mp3)$ {
root /var/www/$host/web;
access_log off;
expires 30d;
}
location / {
root /var/www/$host/web;
index index.html index.htm index.php;
access_log off;
proxy_pass http://$host:82;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}Questo è tutto. Nginx servirà tutti i tuoi file statici come immagini, anche i file html e i file php verranno inoltrati ad Apache.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.