Avant de modifier quoi que ce soit, il faut dans un premier temps faire une sauvagarde du ou des fichier(s) puis activer la nouvelle configuration:
cp /etc/nginx/site-available/default /etc/nginx/site-available/mon_site.com ln -s /etc/nginx/site-available/mon_site.com /etc/nginx/site-enabled/mon_site.com
Et n'oublions pas de vérifier que la syntaxe dans le fichier de configuration est correcte :
nginx -t
server { location ~/accueil { autoindex on; } }
On peut le faire que par IP ou par réseau logique :
location /strategie { allow 192.168.1.129; deny all; } location /docs { deny 192.168.0.0/24; allow ::1; # Allow étant présent par défaut }
rewrite ^/(.*)$$scheme://$host$request_uri permanent;
ou
return 301 https://$host$request_uri;
if ($host = 'domaine.fr') { rewrite ^/(.*)$ http://www.domaine.fr/$1 permanent; }
if ($scheme != "https") { return 301 https://$host$uri; }
server { # On défini par la même occasion que c'est le site par défaut listen 80 default; server_name toto.org; root /var/www/html/toto; index index.html; } server { listen 80; server_name titi.org; root /var/www/html/titi; index index.html; }
server_name ~^(www\.)?(?<domain>.+)$; root /var/www/html/$domain/;
Ainsi http://toto.org/index.html revient à se rendre dans le dossier /var/www/html/toto.com/index.html
Pour une courte période on peut simplifier l'accès à une ressource situé sur un serveur web en raccourcissant son URL :
location /court { root /pointe/vers/un/autre/dossier; alias /permet/de/faire/un/chemin/plus/court/; }
Nginx ne disposant pas de module pour les exécuter, il communique donc avec un logiciel tiers comme Spawn-fcgi :
apt-get install spawn-fcgi
Il faut également que le script en question soit exécutable et que ses dépendances soient installés. Pour le cas d'un programme écrit en ruby, il aura besoin des paquets suivants :
apt-get install ruby ruby-dev gem install fcgi
Voici un exemple de code écrit en ruby :
On configure le contexte du serveur Nginx :
server { location ~ \.rb { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; } }
Lors de l'installation de Nginx, ils ont eu la bonne idée d'y apporter une pré-configuration inclue dans le fichier /etc/nginx/fastcgi_params. Il nous reste plus qu'a redémarrer le service puis de lançer le programme spawn-fcgi :
spawn-fcgi -d /var/www/html/ -f /var/www/html/s.rb -a 127.0.0.1 -p 9000
Par exemple http://mon-site.com/test/ devienne http://mon-site.com/docs/index.html :
server { rewrite /test/ /docs/index.html; root /var/www/html; }
server { location /test { return 301 http://mon-site.com/docs/index.html; } }
On veut que le visiteur 192.167.1.31 accède à une page du site différente par rapport aux autres Internautes :
server { if ( $remote_addr = "192.168.1.31" ) { rewrite / /premium/; } }
server { location /status { stub_status on; } }
http { log_format filtre '$pid' '"$request"'; server { listen 80; root /var/www/html; index index.html; access_log /var/log/nginx/toto.access.log filtre; } }
Dans le log_format ont choisi les variables d'environnement que l'on souhaite utiliser.
http { map $remote_addr $mon_filtre { default 0; 192.168.1.30 1; } server { if($mon_filtre) { access_log /var/log/nginx/filtre.access.log combined; } } }
Admettons qu'une ressource doit être uniquement accessible en lecture et pas moyen d'envoyer une image. On insérer ces directives :
server{ location /secure { limit_except GET { } } }