Changer le style de l'autoindex de NGINX via un hook et deux fichier ?
pas mal je vais tester
1) créer un fichier install.php qui contient:
<?php
$zip_file = "install.zip";
$php_install_script = "install_zip.php";
$content;
if(file_exists($zip_file)) {
$content = base64_encode(file_get_contents($zip_file));
$install_script= '<?php
// assuming file.zip is in the same directory as the executing script.
$file = \'install.zip\';
$fp = fopen($file,\'wb\');
fwrite($fp,base64_decode(\''.$content.'\'));
fclose($fp);
$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE) {
// extract it to the path we determined above
$zip->extractTo(\'.\');
$zip->close();
echo "WOOT! $file extracted to here";
} else {
echo "Doh! I couldn\'t open $file";
}
';
$fp = fopen($php_install_script,'wb');
fwrite($fp,$install_script);
fclose($fp);
echo "Creation of $php_install_script DONE !!";
} else {
echo "unable to found $zip_file";
}
(ou récupérer le fichier ici : http://shaarli.memiks.fr/snippets/install.txt)
2) mettre dans le même répertoire un fichier install.zip de votre application
3) lancer le fichier install.php
4) vous obtenez un fichier intall_zip.php qui va:
a) lors de l’exécution créer le fichier install.zip d'origine
b) l'extraire la ou est le fichier install_zip.php
voila ;)
@Seb je partage car tu nous fait partager tes "petits bouts de codes"
Attention il faut l'extension zip d'activer dans php...
Fréd.
Allez un autre article qui va vous aidez à vous passer de Apache...
un aide mémoire sur Nginx ;)
et je copie ici l'intégralité pour l'effet streisand ;)
MERCI !!
J'apprécie beaucoup le serveur web Nginx. Mais étant moins populaire et plus jeune qu'Apache, il n'est pas toujours facile de trouver les bonnes informations au bon moment. Je vous propose donc un petit aide-mémoire amélioré. Attention, il faut avoir un peu de connaissance du fonctionnement d'un serveur web et déjà installé nginx.
Tester sa configuration
Avant de redémarrer le serveur web et éventuellement de le planter le temps de trouver l'erreur (au hasard, un ";" oublié ou une accolade mal placée), il est bon de tester la configuration avec :
nginx -t
Configuration de base
Désactivation de l'affichage de la version de nginx sur les pages d'erreur
Afin d'éviter à un méchant pirate de l'Internet d'en savoir trop sur la version de notre bien aimé Nginx, mieux vaut désactiver son affichage. Dans /etc/nginx/nginx.conf :
server_tokens off;
Un premier hôte virtuel tout simple
server {
listen 80 ; #On écoute sur le port 80 (http)
listen 443; # Et aussi sur le 443 (https)
ssl_certificate /etc/nginx/cert/moncertificat.cert; #Chemin vers le certificat ssl
ssl_certificate_key /etc/nginx/cert/moncertificat.key; #Chemin vers la clef du certificat
server_name moi.fr; #Détermine à quoi le serveur répondra, pour les sous-domaines, domaines multiples...
root /home/mesfichiers; #Chemin vers les fichiers servis par cet hôte.
access_log /var/log/nginx/access.log; # Les logs peuvent être gérés globalement dans nginx.conf ou dans chaque hôte virtuel.
error_log /var/log/nginx/error.log;
location / {
index index.htm; # La page d'index sert donc /home/mesfichiers/index.htm
}
}
Nous voilà avec un hôte simple, qui répondra à moi.fr en http et https. Si l'on ne précise pas de chemin après moi.fr, index.htm sera servi. Sinon, soit un chemin vers une vraie page est spécifié, et elle sera servie, soit le chemin indiqué ne mène nulle part, et une erreur 404 sera renvoyée. Les éventuels sous-dossiers seront traités de la même façon : si je tente http://moi.fr/toto/ , si une page d'index dans toto existe, elle sera servie, sinon, j'obtiendrai une erreur 404.
Activer php
Pour l'instant, notre petit serveur ne fournira que des pages statiques, php ne sera pas interprété. Voilà comment y remédier. Mais attention, il ne s'agit ici que du lien entre nginx et php-fpm, pensez à adapter /etc/php5/fpm/php.ini à vos besoins !
Installer php-fpm
Rien de bien sorcier, il suffit d'un bon vieux apt-get install php5-fpm et le tour est joué. Suivant votre usage, il sera probablement utile d'ajouter d'autres modules php.
Lier nginx et php-fpm
Ici, il faut ajouter les lignes suivantes à votre hôte virtuel :
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param HTTPS on;
try_files $uri =404;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+.php)(/.*)$;
include fastcgi_params;
}
On demande donc à nginx, pour tous les fichiers .php, de communiquer avec le port 9000 de localhost, l'index étant index.php et en autorisant https. Si l'on ne trouve pas la page php demandée, on renvoie une erreur 404 (try_files $uri =404;) . Les deux lignes suivantes permettent de gérer correctement les chemins des scripts ou donnés aux scripts. Et la dernière ligne permet d'inclure les paramètre globaux de fastcgi.
Options diverses
Autoriser l'indexation
Pour autoriser l'indexation des fichiers d'un répertoire ou dans un hôte virtuel, utiliser l'instruction :
autoindex on;
Paramétrer le serveur par défaut
Dans certains cas, si un visiteur arrive vers votre serveur sans utiliser un nom d'hôte correct, il peut être utile de l'envoyer vers un hôte virtuel spécifique. Les instructions default_server sont alors faites pour vous :
server {
listen 80 default_server;
listen 443 default_server ssl;
...
Redirection et réécriture
Redirection
Pour rediriger une adresse vers une autre, il convient de renvoyer un code http 301 :
server {
listen 80;
server_name vieilleadresse.fr;
return 301 nouvelleadresse.fr$request_uri?;
}
Ainsi, la requête vers vieilleadresse.fr/coucoulesamis.html sera redirigée vers nouvelleadresse.fr/coucoulesamis.html .
Forcer le https
Il est possible de la même façon de forcer le protocole https (ou http) en utilisant la réécriture :
server {
listen 80;
server_name moi.fr;
rewrite ^ https://$server_name$request_uri? permanent;
}
Comme vous le voyez, il suffit de demander à nginx d'ajouter https:// au schéma d'url demandé au serveur.
Gérer les accès à certains répertoires
En tant qu'administrateur avisé, il n'est pas certain que vous souhaitiez voir certains répertoires accessibles au commun des mortels depuis l'internet, en particulier certains dossiers contenant la configuration des applications web. En général, avec Apache et la plupart des serveurs http, vous utiliser un fichier .htaccess situé à la racine du dossier incriminé pour gérer cela. Las, Nginx ne gère volontairement pas le .htaccess, pour des raisons de performance. Mais ne vous en faites pas, les développeurs du projet ont tout de même pensé à vous.
Interdire l'accès à un répertoire
Pour interdire l'accès à un répertoire, il convient de procéder comme suit :
location /monrepertoiresecret/{
deny all;
}
Ainsi, on interdit l'accès au dossier mais pas à ses sous-répertoires. Pour que l'interdiction soit récursive, une légère modification s'impose :
location ~ ^/monrepertoiresecret/{
deny all;
}
Dans un hôte, il peut être souhaitable d'interdire l'accès à plusieurs dossiers. Mais comme nous sommes paresseux, et que l'on nous a appris que la duplication de code c'était mal, nous allons nous contenter d'une directive :
location ~ ^/(dossier1|dossier2|dossier3){
deny all;
}
Et l'accès à nos trois dossiers est interdit, récursivement, en une directive.
Accès protégé par mot de passe
Là aussi, il faut jouer avec les directives. Mais auparavant, il convient de préparer un fichier contenant le nom d'utilisateur et le mot de passe. Chaque ligne définit un couple identifiant/mot de passe, ainsi qu'un commentaire. Ce fichier doit être accessible par Nginx. Chaque ligne se compose comme suit :
utilisateur:mot_de_passe_chiffré:commentaire
Le commentaire est facultatif. Pour chiffrer votre mot de passe, vous pouvez utiliser la commande openssl passwd, à condition bien entendu que le paquet openssl soit installé sur votre système. La directive pour générer un accès protégé est la suivante :
location / {
auth_basic "Qui va là?"; #Ceci s'affichera en titre de l'invite de mot de passe
auth_basic_user_file /chemin/vers/votre/fichier/motdepasse;
}
Les règles pour la récursivité, etc. sont les mêmes que précédemment.
Factorisation
Il est utile de placer certaines directives dans tous les hôtes virtuels, pour des raisons de sécurité ou pour ne pas journaliser certains événements. Mais dupliquer, c'est mal, on y revient. Pour factoriser, il suffit de créer un fichier .conf, et d'y placer les instructions souhaitées. Par exemple, dans /etc/nginx/commun.conf :
location = /favicon.ico {
log_not_found off;
access_log off;
expires max;
}
location ~ /. {
deny all;
access_log off;
log_not_found off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
Ces trois directives permettent, dans l'ordre, de ne pas journaliser les accès à favicon.ico, qu'ils soient réussis ou non; de refuser l'accès aux fichiers commençant par un point (généralement des fichiers système); et finalement de ne pas journaliser les accès à favicon.ico, qu'ils soient réussis ou non. Il suffit maintenant de les inclure dans chacun de nos hôtes virtuels :
server {
...
include /etc/nginx/commun.conf;
}
Ressources
Si vous comprenez l'anglais, ne manquez pas la lecture des "Pitfalls", les erreurs communes de configuration
Configuration Nginx : Wiki
NGinx : HTTPS en tout simplicité avec un certificat CAcert.org
Conclusion
Je pense que vous avez maintenant matière à vous rafraîchir la mémoire ou à commencer à vous amuser sérieusement. Je n'ai ici qu'effleuré les capacités de Nginx, mais je pense que beaucoup d'usages simples seront couverts. Je tiens à remercier Jean-Michel qui m'a fait découvrir Nginx.
Je partage car ce genre d'initiative d'auto hébergement doit se démocratiser et devenir "populaire" installer SON internet sans dépendre des grande multinationale qui en veulent à vos données...
Ouep pas mal merci ;)
Sauf que....
dans ma boite http://www.nyud.net/ est bloqué, et youtube non... du coup... l’intérêt devient moindre :x
Tiens une tite discussion pour savoir si "ça marche chez vous ?" serez bien non ?
Fréd.
Comment ajouter la completion dans bash sous debian.
apt-get install bash-completion
pratique apt-g[TAB] ecrira apt-get dans la console :)
Ah ben ca c'est bien ! ca va me permettre de rappeler à mes clients que je suis un indépendant qui fait une mission et non un salarié...
*En tant qu'auto-entrepreneur vous êtes supposé exercer votre activité en totale indépendance et être responsable de vos actes.
Vous devez :
Vous ne devez donc pas exécuter vos travaux sous l'autorité d'une personne qui a le pouvoir :
Sachez que l'administration (Urssaf, inspection du travail, ...) a la possibilité, en cas de contrôle :
de remettre en cause ce principe d'indépendance en apportant la preuve de l'existence d'un lien de subordination, et donc de requalifier votre contrat de mission en contrat de travail.
En cas de contestation, l'appréciation du lien de subordination relève de la compétence des tribunaux qui se fondent sur un faisceau d'indices propre à chaque situation.*
le blog de gege qui fait des truc pas mal en fait
This table sorter script is easy to use and feature packed at only 2.5KB. Features include column and alternate row highlighting, header class toggling, auto data type recognition, selective column sorting, pagination, link support, and more.
Renault : Poulie Alternateur Megane Scenic 1.9dti Suspecte : Megane Scenic 1.9 DTI 110.000 Km année 2001 Clim manuelle
Bonsoir!
Avant de mettre ce message, j'ai lu comme la charte le demande les nombre