Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente | |||
| informatique:serveurs:installation:logiciels:nginx [2020/02/09 14:46] – [Installation du script de création des domaines virtuels] jpmilcent | informatique:serveurs:installation:logiciels:nginx [2020/02/09 14:48] (Version actuelle) – supprimée jpmilcent | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ======Installation de Nginx====== | ||
| - | ===== Compiler Nginx ===== | ||
| - | * Passer en admin : '' | ||
| - | * Se rendre dans le dossier des scripts : '' | ||
| - | * Lancer le script : '' | ||
| - | |||
| - | ===== Configurer Nginx ===== | ||
| - | * Créer le dossier de cache de nginx : | ||
| - | * '' | ||
| - | * '' | ||
| - | * Préparer le dossier de config : | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * Créer un espace " | ||
| - | * '' | ||
| - | * '' | ||
| - | * Ajouter le fichier " | ||
| - | * Créer un lien dans le dossiers / | ||
| - | * Adapter le fichier nginx.conf avec le contenu indiqué ci-dessous : '' | ||
| - | * Démarrer le serveur : '' | ||
| - | |||
| - | ===== Config générale de nginx ===== | ||
| - | Fichier / | ||
| - | <code nginx> | ||
| - | user www-data www-data; # Default: nobody | ||
| - | worker_processes | ||
| - | # Nombre de fichiers ouverts par processeur | ||
| - | worker_rlimit_nofile 100000; | ||
| - | |||
| - | pid / | ||
| - | |||
| - | # [ debug | info | notice | warn | error | crit ] | ||
| - | error_log | ||
| - | |||
| - | events { | ||
| - | worker_connections | ||
| - | # use [ kqueue | rtsig | epoll | /dev/poll | select | poll ] ; | ||
| - | # use kqueue; | ||
| - | use epoll; | ||
| - | } | ||
| - | |||
| - | http { | ||
| - | include | ||
| - | # include | ||
| - | index index.html index.htm index.php; | ||
| - | |||
| - | default_type | ||
| - | |||
| - | log_format main '" | ||
| - | '" | ||
| - | ' | ||
| - | '" | ||
| - | |||
| - | # La ligne ci-dessous semble inutile puisqu' | ||
| - | access_log | ||
| - | |||
| - | sendfile | ||
| - | tcp_nopush | ||
| - | |||
| - | # 1er param : timeout pour les connections keep-alive ; 2ème param : valeur du header " | ||
| - | keepalive_timeout 30 30; | ||
| - | # délai d' | ||
| - | fastcgi_read_timeout 3600s; | ||
| - | |||
| - | gzip on; | ||
| - | gzip_comp_level 9; # 1 <= level <= 9 | ||
| - | gzip_min_length 50; # les fichiers plus petits que 50 octets ne sont pas compressés | ||
| - | # types de fichiers à compresser | ||
| - | gzip_types | ||
| - | text/css | ||
| - | text/plain | ||
| - | text/ | ||
| - | application/ | ||
| - | application/ | ||
| - | application/ | ||
| - | application/ | ||
| - | application/ | ||
| - | application/ | ||
| - | application/ | ||
| - | application/ | ||
| - | application/ | ||
| - | image/ | ||
| - | image/ | ||
| - | application/ | ||
| - | application/ | ||
| - | |||
| - | # Load all vhosts ! | ||
| - | include / | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Config du domaine d' | ||
| - | * Créer les dossiers suivant : | ||
| - | * '' | ||
| - | * '' | ||
| - | * Exemple de fichier de config pour le domaine hébergeant le statut de Nginx. | ||
| - | * Domaine // yilgarn.clapas.ovh //, fichier '' | ||
| - | server { | ||
| - | server_name yilgarn.clapas.ovh www.yilgarn.clapas.ovh; | ||
| - | root "/ | ||
| - | |||
| - | index index.php index.html index.htm; | ||
| - | client_max_body_size 10m; | ||
| - | |||
| - | access_log / | ||
| - | access_log / | ||
| - | error_log / | ||
| - | |||
| - | ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''# | ||
| - | # BLOCAGE - Bloquer l' | ||
| - | |||
| - | # Bloquer l' | ||
| - | if ($http_user_agent ~* (Baiduspider|webalta|nikto|wkito|pikto|scan|acunetix|morfeus|webcollage|youdao) ) { | ||
| - | return 401; | ||
| - | } | ||
| - | # Bloquer l' | ||
| - | if ($http_user_agent ~* (HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) ) { | ||
| - | return 401; | ||
| - | } | ||
| - | |||
| - | # PROTECTION - Éviter l' | ||
| - | |||
| - | # Éviter l' | ||
| - | location ~ " | ||
| - | return 404; | ||
| - | } | ||
| - | |||
| - | # Éviter l' | ||
| - | location ~ " | ||
| - | return 404; | ||
| - | } | ||
| - | |||
| - | # Éviter l' | ||
| - | location ~ " | ||
| - | return 404; | ||
| - | } | ||
| - | | ||
| - | # AUTHENTIFICATION HTTP - Zones à accès restreint par mot de passe | ||
| - | | ||
| - | # Fichiers php de gestion : OpCache, Log, Info PHP... | ||
| - | location ~ "/ | ||
| - | auth_basic "Zone restreinte. Indiquez un login et mot de passe."; | ||
| - | auth_basic_user_file / | ||
| - | |||
| - | include / | ||
| - | fastcgi_pass | ||
| - | } | ||
| - | |||
| - | # STATUTS | ||
| - | |||
| - | location / | ||
| - | stub_status on; | ||
| - | access_log off; | ||
| - | allow 127.0.0.1; | ||
| - | allow 82.239.139.74; | ||
| - | allow 193.54.123.216; | ||
| - | allow 162.38.234.0/ | ||
| - | deny all; | ||
| - | } | ||
| - | |||
| - | # Statuts PHP-FPM 5.6 | ||
| - | # ATTENTION : pour voir ces infos, le fichier php-56-fpm.sock doit avoir un droit de lecture pour l' | ||
| - | location ~ ^/ | ||
| - | access_log off; | ||
| - | include fastcgi_params; | ||
| - | fastcgi_pass | ||
| - | fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; | ||
| - | allow 127.0.0.1; | ||
| - | allow 82.239.139.74; | ||
| - | deny all; | ||
| - | } | ||
| - | |||
| - | # Statuts PHP-FPM 5.5 | ||
| - | # ATTENTION : pour voir ces infos, le fichier php-55-fpm.sock doit avoir un droit de lecture pour l' | ||
| - | location ~ ^/ | ||
| - | access_log off; | ||
| - | include fastcgi_params; | ||
| - | fastcgi_pass | ||
| - | fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; | ||
| - | allow 127.0.0.1; | ||
| - | allow 82.239.139.74; | ||
| - | deny all; | ||
| - | } | ||
| - | |||
| - | # Statuts PHP-FPM 5.4 | ||
| - | # ATTENTION : pour voir ces infos, le fichier php-54-fpm.sock doit avoir un droit de lecture pour l' | ||
| - | location ~ ^/ | ||
| - | access_log off; | ||
| - | include fastcgi_params; | ||
| - | fastcgi_pass | ||
| - | fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; | ||
| - | allow 127.0.0.1; | ||
| - | allow 82.239.139.74; | ||
| - | deny all; | ||
| - | } | ||
| - | |||
| - | # Réecritures générales | ||
| - | |||
| - | location / { | ||
| - | try_files $uri $uri/ / | ||
| - | } | ||
| - | |||
| - | location ~ " | ||
| - | fastcgi_split_path_info ^(.+\.php)(.*)$; | ||
| - | |||
| - | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | ||
| - | fastcgi_param SCRIPT_NAME $fastcgi_script_name; | ||
| - | fastcgi_param PATH_INFO $fastcgi_path_info; | ||
| - | fastcgi_param SERVER_NAME $host; | ||
| - | |||
| - | if ($uri !~ " | ||
| - | fastcgi_pass | ||
| - | } | ||
| - | include fastcgi_params; | ||
| - | } | ||
| - | |||
| - | location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { | ||
| - | expires max; | ||
| - | log_not_found off; | ||
| - | access_log off; | ||
| - | } | ||
| - | |||
| - | location ~* \.(html|htm)$ { | ||
| - | expires 30m; | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Exemple de config pour le sous-domaine sql.clapas.ovh ===== | ||
| - | Domaine // sql.clapas.ovh //, fichier '' | ||
| - | <code nginx> | ||
| - | server { | ||
| - | server_name sql.clapas.ovh www.sql.clapas.ovh; | ||
| - | root "/ | ||
| - | |||
| - | index index.php index.html index.htm; | ||
| - | client_max_body_size 10m; | ||
| - | |||
| - | access_log / | ||
| - | access_log / | ||
| - | error_log / | ||
| - | |||
| - | # BLOCAGE - Bloquer l' | ||
| - | |||
| - | # Bloquer l' | ||
| - | if ($http_user_agent ~* (Baiduspider|webalta|nikto|wkito|pikto|scan|acunetix|morfeus|webcollage|youdao) ) { | ||
| - | return 401; | ||
| - | } | ||
| - | # Bloquer l' | ||
| - | if ($http_user_agent ~* (HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) ) { | ||
| - | return 401; | ||
| - | } | ||
| - | |||
| - | # PROTECTION - Éviter l' | ||
| - | |||
| - | # Éviter l' | ||
| - | location ~ " | ||
| - | return 404; | ||
| - | } | ||
| - | |||
| - | # Éviter l' | ||
| - | location ~ " | ||
| - | return 404; | ||
| - | } | ||
| - | |||
| - | # Éviter l' | ||
| - | location ~ " | ||
| - | return 404; | ||
| - | } | ||
| - | | ||
| - | # Réecritures générales | ||
| - | |||
| - | location / { | ||
| - | try_files $uri $uri/ / | ||
| - | } | ||
| - | |||
| - | location ~ " | ||
| - | fastcgi_split_path_info ^(.+\.php)(.*)$; | ||
| - | |||
| - | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | ||
| - | fastcgi_param SCRIPT_NAME $fastcgi_script_name; | ||
| - | fastcgi_param PATH_INFO $fastcgi_path_info; | ||
| - | fastcgi_param SERVER_NAME $host; | ||
| - | |||
| - | if ($uri !~ " | ||
| - | fastcgi_pass | ||
| - | } | ||
| - | include fastcgi_params; | ||
| - | } | ||
| - | |||
| - | location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { | ||
| - | expires max; | ||
| - | log_not_found off; | ||
| - | access_log off; | ||
| - | } | ||
| - | |||
| - | location ~* \.(html|htm)$ { | ||
| - | expires 30m; | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Exemple de config d'un domaine fournissant une api ===== | ||
| - | Fichier '' | ||
| - | <code nginx> | ||
| - | server { | ||
| - | server_name api.bota.ovh www.api.bota.ovh; | ||
| - | root "/ | ||
| - | |||
| - | index index.php index.html index.htm; | ||
| - | client_max_body_size 50m; | ||
| - | |||
| - | access_log / | ||
| - | access_log / | ||
| - | error_log / | ||
| - | |||
| - | if ($http_user_agent ~* (Baiduspider|webalta|nikto|wkito|pikto|scan|acunetix|morfeus|webcollage|youdao) ) { | ||
| - | return 401; | ||
| - | } | ||
| - | |||
| - | if ($http_user_agent ~* (HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) ) { | ||
| - | return 401; | ||
| - | } | ||
| - | |||
| - | # Éviter l' | ||
| - | location ~ " | ||
| - | return 404; | ||
| - | } | ||
| - | |||
| - | # Eviter l' | ||
| - | location ~ " | ||
| - | return 404; | ||
| - | } | ||
| - | |||
| - | location / { | ||
| - | try_files $uri $uri/ / | ||
| - | } | ||
| - | |||
| - | # CORS dynamique multi-domaines | ||
| - | set $cors_origine_acceptee " | ||
| - | if ($http_origin ~* (www\.bota\.ovh|localhost)) { | ||
| - | set $cors_origine_acceptee " | ||
| - | } | ||
| - | |||
| - | # Entêtes pour CORS | ||
| - | add_header Access-Control-Allow-Origin " | ||
| - | add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"; | ||
| - | add_header Access-Control-Allow-Credentials " | ||
| - | add_header Access-Control-Expose-Headers " | ||
| - | |||
| - | # redéfinition par défaut de la query_string | ||
| - | set $query_string_api $args; | ||
| - | |||
| - | location ~ " | ||
| - | fastcgi_split_path_info ^(.+\.php)(.*)$; | ||
| - | |||
| - | include / | ||
| - | fastcgi_pass | ||
| - | |||
| - | # Réecriture des headers pour l'API d' | ||
| - | fastcgi_param REQUEST_URI $request_uri_api; | ||
| - | fastcgi_param QUERY_STRING $query_string_api; | ||
| - | } | ||
| - | |||
| - | location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { | ||
| - | expires max; | ||
| - | log_not_found off; | ||
| - | access_log off; | ||
| - | } | ||
| - | | ||
| - | location ~* \.(html|htm)$ { | ||
| - | expires 30m; | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Installation du script de création des domaines virtuels ===== | ||
| - | * '' | ||
| - | * ''< | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * Créer un fichier de test : '' | ||
| - | * Contenu : '' | ||
| - | * Modifier le script général : '' | ||
| - | * Remplacer le nom de dossier " | ||
| - | * Remplacer la ligne 50 par : <code bash> if [ " | ||
| - | * Après la ligne 98 ajouter : <code bash> | ||
| - | # Copy the test.php file'' | ||
| - | cp $CURRENT_DIR/ | ||
| - | echo "Test installation with : http:// | ||
| - | </ | ||
| - | * Créer un script spécifique à une version de php : | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * Changer les droits de tous les fichiers : '' | ||
| - | |||
| - | Remplacer le contenu de nginx.vhost.conf.template par : | ||
| - | <code nginx> | ||
| - | server { | ||
| - | server_name @@HOSTNAME@@ www.@@HOSTNAME@@; | ||
| - | root " | ||
| - | |||
| - | index index.php; | ||
| - | client_max_body_size 10m; | ||
| - | |||
| - | access_log @@LOG_PATH@@/ | ||
| - | access_log / | ||
| - | error_log @@LOG_PATH@@/ | ||
| - | | ||
| - | if ($http_user_agent ~* (Baiduspider|webalta|nikto|wkito|pikto|scan|acunetix|morfeus|webcollage|youdao) ) { | ||
| - | return 401; | ||
| - | } | ||
| - | |||
| - | if ($http_user_agent ~* (HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) ) { | ||
| - | return 401; | ||
| - | } | ||
| - | |||
| - | location / { | ||
| - | try_files $uri $uri/ / | ||
| - | } | ||
| - | | ||
| - | location ~ " | ||
| - | fastcgi_split_path_info ^(.+\.php)(.*)$; | ||
| - | |||
| - | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | ||
| - | fastcgi_param SCRIPT_NAME $fastcgi_script_name; | ||
| - | fastcgi_param PATH_INFO $fastcgi_path_info; | ||
| - | fastcgi_param SERVER_NAME $host; | ||
| - | |||
| - | if ($uri !~ " | ||
| - | fastcgi_pass | ||
| - | } | ||
| - | include | ||
| - | } | ||
| - | |||
| - | location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { | ||
| - | expires max; | ||
| - | log_not_found off; | ||
| - | access_log off; | ||
| - | } | ||
| - | | ||
| - | location ~* \.(html|htm)$ { | ||
| - | expires 30m; | ||
| - | } | ||
| - | |||
| - | location ~* / | ||
| - | deny all; | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Remplacer le contenu de pool.conf.template par : | ||
| - | <code properties> | ||
| - | ; Doc sur les paramètres : http:// | ||
| - | [@@USER@@] | ||
| - | listen = / | ||
| - | listen.owner = @@USER@@ | ||
| - | listen.group = @@USER@@ | ||
| - | listen.mode = 0660 | ||
| - | user = @@USER@@ | ||
| - | group = @@USER@@ | ||
| - | pm = dynamic | ||
| - | pm.max_children = @@MAX_CHILDS@@ | ||
| - | pm.start_servers = @@START_SERVERS@@ | ||
| - | pm.min_spare_servers = @@MIN_SERVERS@@ | ||
| - | pm.max_spare_servers = @@MAX_SERVERS@@ | ||
| - | pm.max_requests = 500 | ||
| - | request_terminate_timeout = 30s | ||
| - | chdir = / | ||
| - | php_admin_value[session.save_path] = " | ||
| - | php_admin_value[open_basedir] = " | ||
| - | </ | ||
| - | |||
| - | ===== Activer Speedy sur Nginx ===== | ||
| - | * Ressource : http:// | ||
| - | * Pour activer Speedy, il faut : | ||
| - | * compiler Nginx avec le support de Speedy ('' | ||
| - | * avoir OpenSSL installé en version 1.0.1 minimum | ||
| - | * Modifier ensuite dans le fichier de conf du domaine où l'on veut activer Speedy, avec les infos suivante : <code nginx> | ||
| - | server { | ||
| - | listen 443 ssl spdy; | ||
| - | |||
| - | ssl_certificate server.crt; | ||
| - | ssl_certificate_key server.key; | ||
| - | ... | ||
| - | } | ||
| - | </ | ||