NginX

De OpenWikiBSD
Aller à : navigation, rechercher

Installation

OpenBSD

Désormais, NginX est le serveur web par défaut sous OpenBSD; plus besoin de ports.

pkg_add nginx

Script de lancement désormais classique

/etc/rc.d/nginx
perl -pi -e 's/nginx_flags=NO/nginx_flags=""/' /etc/rc.conf
/etc/rc.d/nginx start


Les logs sont stockés dans /var/www/logs. C'est vers ce répertoire que pointe le logs de nginx.conf

Debian

apt-get install nginx-full php5 php5-fpm php5-cgi php5-cli php5-common

Configuration

Testez et retestez :

nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

Vérifiez la config

nginx -s reload

PHP

Votre installation de base vous lance un téléchargement des fichiers php et non une éxécution;

Ajoutez, à votre directive server dans '/etc/ningx/nginx.conf :

   location ~ \.php$ {
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
           include        fastcgi_params;
       }

php.ini se trouve dans /etc.php-5.4.ini

Serveurs virtuels

Ajouter dans le fichier de conf :

server {
       listen       80;
       server_name      FQDN;
       access_log  logs/access_FQDN.log ;
       error_log logs/error_FQDN.log  ;
       root         /var/www/htdocs/FQDN;
   }

Permettre l'affichage du contenu d'un répertoire virtuel

Dans une accolade server

location /SubDir {
       autoindex       on;
       autoindex_exact_size off;
       autoindex_localtime off;
       allow all;
}

Filtrer les accès à un site

Dans /etc/nginx/nginx.conf

 auth_basic "Zone a acces restreint";
 auth_basic_user_file conf/Fichierdemotsdepasse;

Avec Fichierdemotsdepasse obtenu grâce à la commande htpassd :

htpasswd -c Fichierdemotsdepasse User

Attention Fichierdemotsdepasse est donc ici dans le sous répertoire conf du répertoire contenant nginx.conf

Spécificité OpenBSD

NginX est chrooté, c'est à dire mis dans une prison /var/www

Le Fichierdemotsdepasse doit donc se trouver dans cette arborescence, soit :

mkdir -p /var/www/etc/nginx/conf
cp Fichierdemotsdepasse /var/www/etc/nginx/conf
/etc/rc.d/nginx restart

Debian

  • Fichier de conf : /etc/nginx/nginx.conf
  • Sites /etc/nginx/sites-available
  • Arbo web /usr/share/nginx/www

OpenBSD

  • Fichier de conf : /etc/nginx/nginx.conf
  • Sites /etc/nginx/sites-available
  • Arbo web classique : /var/www

Compilation de NginX

NginX ne supporte pas (contrairement à Apache) le chargement de modules dynamique; il faut tout compiler au départ... Ben oui, il lui faut bien des avantages à l'ancêtre au scalp..

Une | doc d'install avant la mise en place de NginX en standard.

pkg_add pcre gnupg
wget http://nginx.org/download/nginx-1.6.2.tar.gz
wget http://nginx.org/download/nginx-1.6.2.tar.gz.asc
wget http://nginx.org/keys/is.key
gpg --import is.key 
 gpg --keyserver pgp.mit.edu --recv-keys 0xA1C052F8
gpg --verify nginx-1.6.2.tar.gz.asc 
 gpg: Signature made Tue Sep 16 14:25:45 2014 CEST using RSA key ID A1C052F8
 gpg: Good signature from "Maxim Dounin <mdounin@mdounin.ru>"
 gpg: WARNING: This key is not certified with a trusted signature!
 gpg:          There is no indication that the signature belongs to the owner.
 Primary key fingerprint: B0F4 2533 73F8 F6F5 10D4  2178 520A 9993 A1C0 52F8
 tar zxvf nginx-1.6.2.tar.gz
 ./configure --sbin-path=/usr/local/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --with-http_ssl_module --http-log-path=/var/log/nginx.log --error-log-path=/var/log/nginx-error.log --http-fastcgi-temp-path=/var/tmp/fastcgi_tmp --http-proxy-temp-path=/var/tmp/proxy_tmp --http-client-body-temp-path=/var/tmp/client_body_temp --with-http_stub_status_module  --with-http_mp4_module   --user=www --group=www

J'ai rajouté le --with-http_mp4_module

Votre nouvel nginx se retrouve dans /usr/local/sbin

Reverse Proxy

[1]

Dans /etc/nginx/conf.d/proxy.conf :

proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
client_header_buffer_size 64k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size   16k;
proxy_buffers       32   16k;
proxy_busy_buffers_size 64k;

Dans /etc/nginx/sites-enabled/default :

server {

listen 80;

       server_name     Nom.QDN.serveur1;
       location / {
               proxy_pass         http://10.0.0.101/;
       }
}
server {

listen 80;

       server_name     Nom.QDN.serveur2;
       location / {
               proxy_pass         http://10.0.0.102/;
       }
}

Authentification TLS mutuelle

Votre IGC perso a généré des certificats TLS serveurs et clients issus de la même AC racine ? Couplez les deux éléments dans une authentification TLS mutuelle. "Tu ne pourras te connecter ici QUE si tu arrives avec un certificat client issu de la même AC que moi

Très haute sécu, mais adieu les interceptions TLS qui ne pourront pas rejouer l'authent cliente après vous avoir présenté une fausse AC racine....

server {
       listen       443 ssl;
       server_name  localhost;
       root         /var/www/htdocs;
       ssl_certificate     /etc/ssl/cert.crt;
       ssl_certificate_key /etc/ssl/cert.key;
       ssl_client_certificate /etc/ssl/certs/ca.crt;

C'est là :

       ssl_verify_client on;

En plus, on prend des suites cryptos de haut-niveau :

       ssl_protocols        TLSv1.2;
       ssl_ciphers         HIGH:!aNULL:!MD5;

On peut également passer à l'appli derrière des éléments du certificat dans le header http:

       proxy_set_header X-SSL-client-serial $ssl_client_serial;
          proxy_set_header X-SSL-client-s-dn $ssl_client_s_dn;
           proxy_set_header X-SSL-client-i-dn $ssl_client_i_dn;
           proxy_set_header X-SSL-client-session-id $ssl_session_id;
           proxy_set_header X-SSL-client-verify $ssl_client_verify;