20janv. 2014
Installation de nginx
11h40 - Par dotvav - Picuntu - aucun commentaire
Nginx me sert de reverse proxy pour accéder à ma machine depuis le web. Le but : que toutes les requêtes http qui arrivent sur le port 443 (https donc) de ma freebox asoient forwardées au serveur picuntu. La configuration de la freebox est très facile, je ne m'attarde pas sur ce point.
Sur le serveur picuntu, lancer la commande suivante pour installer nginx :
sudo apt-get install nginx
Configuration
Modifier le fichier de configuration par défaut :
sudo nano /etc/nginx/nginx.conf
Voici ma configuration :
user www-data;
worker_processes 1;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
server {
listen 443 default_server ssl;
ssl_certificate server.crt;
ssl_certificate_key server.key;
auth_basic "Restricted to operators";
auth_basic_user_file .htpasswd;
location /shell/ {
proxy_pass http://localhost:4200;
}
}
}
Quelques commentaires :
- worker_processes est limité à 1 pour ne pas surcharger le CPU avec des tâches de crypto (https)
- nous écoutons sur le port https 443
- nginx s'attend à trouver 3 fichiers : server.crt (le certificat https), server.key (la clé privée du certificat) et .htpasswd (authentification basique)
- toutes les requêtes qui arrivent sur la route /shell/ sont redirigées vers le port 4200 : c'est ShellInABox
Génération de la clé privée et du certificat
Cette étape est expliquée dans la doc Nginx :
sudo -i
cd /etc/nginx
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
exit
Génération du fichier d'authentification
Cette étape est expliquée dans la FAQ Nginx
sudo -i
cd /etc/nginx
printf "LOGIN:$(openssl passwd -crypt PASSWORD)\n" >> .htpasswd
exit
Remplacer LOGIN et PASSWORD par le login et le password que vous allez devoir rentrer pour authentifier votre session http. Cela ne vous prémunis pas de devoir vous logger ensuite avec un vrai compte linux dans ShellInABox. C'est surtout pour cacher par défaut au monde extérieur l'ensemble des services présents sur votre machine.
Recharger les paramètres
Pour informer Nginx que la configuration a changé, et pour qu'il la recharge
sudo nginx -s reload
Tester
Voilà. Nginx transfère maintenant vos requêtes vers le bon service. Exemple : https://mafreebox.fr/shell. Depuis le monde extérieur, remplacer mafreebox.fr par votre adresse ip (par exemple).
aucun commentaire