Jail Nginx
La première étape est de créer le répertoire destiné à acceuillir les données dans la jail.
mkdir -p /home/jails/http/home/http
Il faut ensuite monter le répertoire créé lors de la création de la jail PHP. Pour peu qu’il ne vous dérange pas de trouver les logs ailleurs que dans le dossier du vhost, on peut même le monter en lecture seule.
echo “/home/http /home/jails/http/home/http nullfs ro 1 1” » /etc/fstab.http
Il suffira alors de redémarrer ezjail pour prendre ces changements en compte ou de monter le répertoire à la main en attendant :
mount_nullfs -o ro /home/http /home/jails/http/home/http
On peut ensuite se rendre dans la jail…
jexec http csh
…et installer Nginx.
cd /usr/ports/www/nginx
make install clean
Le but de ma config est de ne pas avoir à modifier un fichier et redémarrer le serveur à chaque fois que j’ajoute un hôte, elle est donc basée sur l’arborescence du répertoire /home/http
.
worker_processes 4;
events { worker_connections 1024; }
http { include mime.types; include vhosts/*;
gzip on; gzip_vary on; gzip_types text/css text/xml text/plain application/javascript application/json application/xhtml+xml;
server { listen 80 default_server;
access_log /var/log/access.log;
error_log /var/log/error.log info;
location / {
root /home/http/$host;
index index.html index.php;
expires max;
add_header Cache-Control "public";
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT /home/http/$host;
fastcgi_param SCRIPT_FILENAME /home/http/$host$fastcgi_script_name;
}
} }
L’avantage de l’intégration de toutes les configurations que Nginx pourrait trouver dans /usr/local/etc/nginx/vhosts/
est qu’il est possible de préciser une configuration différente pour chaque hôtes virtuel en partant de la section server
ci-dessus comme base. C’est ce que j’utilise pour ajouter des règles de réécriture aux hôtes virtuels et pour trac :
Cette configuration spécifie que tout ce qui est servi par Nginx n'expirera pas et peut être mis en cache. La seule façon de s'assurer de la mise à jour d'une ressource statique par un client sera donc d'en changer le nom.
server {
listen 80;
server_name trac.domain.tld;access_log /var/log/access.trac.domain.tld.log;
error_log /var/log/error.trac.domain.tld.log info;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
On crée le fichier de démarrage /etc/rc.conf
afin d’y ajouter le démarrage de Nginx.
echo ’nginx_enable=“YES”’ > /etc/rc.conf
Il ne reste alors plus qu’à lancer le service…
/usr/local/etc/rc.d/nginx start
…et à sortir de la jail.
exit