# Le système d'exploitation GNU-Linux/Le serveur Web Nginx

* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
[ Modifier le sommaire ]

## Commandes

Relancer le serveur :
Voir la configuration du processus lancé :
Voir les logs :
Activer un vhost :
La différence entre "restart" et "reload", est que le premier stoppe tout puis tente de redémarrer, alors que "reload" ne stoppe les anciens processus que si le fichier de configuration ne contient pas d'erreur, et donc que les nouveaux peuvent se lancer. Il est donc plus sécurisé.

## Paramètres

La configuration se trouve dans les fichiers .conf du dossier /etc/nginx/conf.d/.
Exemples de configuration :

## vhosts

On peut trouver des validateurs de vhosts en ligne.

### Variables

le module ngx_http_core_module offre des variables correspondant à celles d'Apache.
* $host
* $alias
* $root
* $realpath_root
* $document_root : $root ou $alias de la requête
* $document_uri
* $request_uri
* $fastcgi_script_name

### Mots réservés

Comme dans Apache, la priorité entre les vhosts est déterminée par l'ordre alphabétique des .conf de /etc/nginx/sites-enables.
Les directives sont :

#### listen

Host et port écoutés par le vhost. Ex :

#### server_name

URL du vhost.
* Exemple simple : server_name x.example.com alias.example.com;
* Pour désigner un nom de serveur invalide (généralement dans le vhost default) : server_name _;
* Pour du regex, préfixer avec "~". Ex : server_name ~^(x|y|z)\.example\.com$;
** Le regex permet même les groupes de capture utilisables dans la suite du vhost (ex : $ma_variable) avec la syntaxe suivante : (?<ma_variable>.+). Exemple avec appel :

#### root

Dossier du système de fichier vers lequel redirige l'URL du vhost.

#### location

Bloc paramétrant un chemin donné au sein de l'URL du server_name. Il peut contenir plusieurs autre mots réservés.

##### fastcgi_param

Définit un des paramètres FastCGI.

#### index

Définit l'index à exécuter. Il peut être global ou inclus dans une location. Ex :

#### return

Ex :

#### rewrite

Réécriture d'URL. Ex :

#### access_log et error_log

Optionnel : emplacement des logs d'accès et d'erreur. Par défaut, /var/log/nginx/access.log et error.log.

#### add_header

Ajoute des clés aux en-têtes HTTP. Par exemple pour les règles de protection Content Security Policy (CSP) contre le cross-site scripting (XSS) :
Pour la protection contre le clickjacking :
Par ailleurs, des sites d'audit gratuits peuvent ensuite révéler s'il reste des failles.

### Exemples

Pour un site HTTP :
Pour un site IPv4 et IPv6 en HTTP et HTTPS :

### Rediriger le flux HTTP vers HTTPS

Ajouter dans la configuration la ligne commençant par "rewrite" ci-dessous :

## Références

* ↑ https://nginx.viraptor.info/
* ↑ http://nginx.org/en/docs/http/ngx_http_core_module.html
* ↑ http://nginx.org/en/docs/http/ngx_http_core_module.html
* ↑ http://nginx.org/en/docs/http/server_names.html
* ↑ https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/
* ↑ https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#taxing-rewrites