Table des matières

Reverse proxy

Ce service sert d'intermédaire entre les sites webs de MiNET et internet.

Il est un intermédiaire de sécurité : le reverse proxy protège les serveurs Web des attaques provenant de l'extérieur. La ré-écriture programmable des URL permet de masquer et de contrôler, par exemple, l'architecture d'un site web interne. Mais cette architecture permet surtout le filtrage en un point unique des accès aux ressources Web.

Un deuxième avantage à MiNET est que cela nous permet d'économiser nos ips publiques et de ne pas demander des ouvertures de ports tous les 4 matins à la DISI. Il nous permet de rendre accessible des sites webs hébergés dans des vlans privés.

D'autres possibilités existent : l'utilisation de mémoire cache afin de décharger les serveurs webs situé derrière, par exemple.

Nous utilisons nginx comme reverse proxy.

Ajouter un site

Rien de plus simple : c'est exactement le même principe que pour les virtual hosts d'apache. Par exemple pour bidon.fr :

server {
        listen          80;
        listen          [::]:80;
        listen          443;
        listen          [::]:443;
        server_name     bidon.fr

        access_log      /var/log/nginx/bidon.access.log;
        error_log       /var/log/nginx/bidon.error.log;

        location / {
                proxy_pass      http://192.168.102.105/;

                allow           157.159.40.0/21;
                deny            all;
        }
}

Ainsi, je peux définir le fichier de log, qui y a accès (ici uniquement l'int. Pour corriger ceci si tel est votre souhait, remplacez les lignes allow et deny par allow all), qui est le serveur ciblé, avec son ip, et les ports sur lesquels on écoute.

cd /etc/nginx/sites-enabled
ln -s ../sites-available/bidon.fr
/etc/init.d/nginx reload

Et voilà, ça marche !

Le https

Le concept ici est de faire du https entre l'extérieur et *nginx*, afin de sécuriser le tout, et du http entre *nginx* :

Il va donc nous falloir les certificats : /etc/nginx/certs/minet.crt et /etc/nginx/certs/minet.key

Ensuite, éditez la configuration du site dans sites-available :

server {
        listen          80;
        listen          [::]:80;
        server_name     site.minet.net;

        rewrite         ^(.*)$ https://$host$1 permanent;
}
server {
        listen          443;
        listen          [::]:443;
        server_name     site.minet.net;

        access_log      /var/log/nginx/site.access.log;
        error_log       /var/log/nginx/site.error.log;

        location / {
                proxy_pass      http://<ip_site>/;
        }
}

Pour le owncloud, il faut augmenter la taille maximale des fichiers upload dans /etc/php5/fpm/php.ini :

post_max_size = 1G
upload_max_filesize = 1G

et dans /etc/nginx/nginx.conf

client_max_body_size 1G