{"id":2269,"date":"2023-01-04T00:07:43","date_gmt":"2023-01-03T23:07:43","guid":{"rendered":"https:\/\/www.webodesign.net\/?p=2269"},"modified":"2023-01-08T17:48:48","modified_gmt":"2023-01-08T16:48:48","slug":"configuration-de-base","status":"publish","type":"post","link":"https:\/\/www.webodesign.net\/?p=2269","title":{"rendered":"2. Configuration de base"},"content":{"rendered":"\n<div class=\"wp-block-uagb-container uagb-block-b337deca alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-columns is-layout-flex wp-container-8\">\n<div class=\"wp-block-column is-layout-flow\">\n<div class=\"wp-block-group is-layout-flow\">\n<div class=\"wp-block-group is-layout-flow\" style=\"border-style:none;border-width:0px;border-radius:0px\">\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-41fa6b93     \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\tSommaire\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap\">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#2-configuration-de-base\" class=\"uagb-toc-link__trigger\">2. Configuration de base<\/a><ul class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#21-configuration-de-base-dapache\" class=\"uagb-toc-link__trigger\">2.1. Configuration de base d\u2019Apache<\/a><ul class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#211-les-directives\" class=\"uagb-toc-link__trigger\">2.1.1. Les directives<\/a><li class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#212-les-conteneurs\" class=\"uagb-toc-link__trigger\">2.1.2. Les conteneurs<\/a><li class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#213-organisation-de-la-configuration\" class=\"uagb-toc-link__trigger\">2.1.3. Organisation de la configuration<\/a><li class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#214-port\u00e9e-et-contexte-des-directives\" class=\"uagb-toc-link__trigger\">2.1.4. Port\u00e9e et contexte des directives<\/a><li class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#215-configuration-du-contexte-de-configuration-globale-du-serveur\" class=\"uagb-toc-link__trigger\">2.1.5. Configuration du contexte de configuration globale du serveur<\/a><\/li><\/ul><li class=\"uagb-toc__list\"><a href=\"#21-configuration-de-base-de-nginx\" class=\"uagb-toc-link__trigger\">2.1. Configuration de base de Nginx<\/a><ul class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#221-directives-et-contextes\" class=\"uagb-toc-link__trigger\">2.2.1. Directives et contextes<\/a><li class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#222-port\u00e9e-de-directives\" class=\"uagb-toc-link__trigger\">2.2.2. Port\u00e9e de directives<\/a><\/li><\/ul><li class=\"uagb-toc__list\"><a href=\"#23-diff\u00e9rences-et-comparaison-des-contextes-et-directives-apache-et-nginx\" class=\"uagb-toc-link__trigger\">2.3. Diff\u00e9rences et comparaison des contextes et directives Apache et Nginx<\/a><ul class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#231-les-contextes\" class=\"uagb-toc-link__trigger\">2.3.1. Les contextes<\/a><ul class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#a-contexte-de-configuration-globale-du-serveur\" class=\"uagb-toc-link__trigger\">A. Contexte de configuration globale du serveur<\/a><li class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#b-contexte-dh\u00f4te-virtuel\" class=\"uagb-toc-link__trigger\">B. Contexte d\u2019h\u00f4te virtuel<\/a><li class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#c-contexte-r\u00e9pertoire\" class=\"uagb-toc-link__trigger\">C. Contexte r\u00e9pertoire<\/a><li class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#d-contexte-htaccess\" class=\"uagb-toc-link__trigger\">D. Contexte .htaccess<\/a><\/li><\/ul><li class=\"uagb-toc__list\"><a href=\"#232-\u00e9quivalents-nginx-des-directives-de-configuration-du-contexte-de-configuration-globale-dapache\" class=\"uagb-toc-link__trigger\">2.3.2. \u00c9quivalents Nginx des directives de configuration du contexte de configuration globale d\u2019Apache<\/a><\/ul><\/ul><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\n\n<h1 class=\"has-text-color wp-block-heading\" id=\"1-i-pr%C3%A9sentation\" style=\"color:#fffdf8;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;font-size:19px\">2. Configuration de base<\/h1>\n\n\n\n<div class=\"wp-block-group has-border-color has-vivid-cyan-blue-border-color has-background is-layout-flow\" style=\"border-style:dotted;border-width:2px;border-radius:8px;background-color:#fffdf8;padding-right:7px;padding-bottom:15px;padding-left:7px\">\n<h2 class=\"has-text-color wp-block-heading\" id=\"1-i-pr%C3%A9sentation\" style=\"color:#fffdf8;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;font-size:1px\">2.1. Configuration de base d\u2019Apache<\/h2>\n\n\n\n<div class=\"qubely-block-accordion  qubely-block-d34844\" data-item-toggle=\"true\">\n<div class=\"wp-block-qubely-accordion-item qubely-block-792b7b\"><div class=\"qubely-accordion-item qubely-type-fill qubely-accordion-active\"><div class=\"qubely-accordion-panel qubely-icon-position-right\"><span class=\"qubely-accordion-panel-handler\" role=\"button\"><span class=\"qubely-accordion-panel-handler-label\">2.1. Configuration de base d\u2019Apache<\/span><span class=\"qubely-accordion-icon fa fa-plus\"><\/span><\/span><\/div><div class=\"qubely-accordion-body\" style=\"display:block\"><div itemprop=\"text\">\n<p>La documentation officielle, <a href=\"https:\/\/httpd.apache.org\/docs\/current\">https:\/\/httpd.apache.org\/docs\/current<\/a> deviendra vite votre meilleure amie. Que ce soit pour v\u00e9rifier la syntaxe d\u2019un \u00e9l\u00e9ment de configuration, savoir si une modification n\u00e9cessite un red\u00e9marrage ou juste un rechargement d\u2019Apache, trouver des exemples de configuration, c\u2019est bien l\u00e0 qu\u2019il vous faudra aller voir.<\/p>\n\n\n\n<p>Ne croyez pas que la documentation est uniquement pour les d\u00e9butantes&nbsp;: il est plus facile de savoir o\u00f9 chercher que de retenir les dizaines, centaines ou milliers d\u2019\u00e9l\u00e9ments de configuration diff\u00e9rents\u2026 m\u00eame les plus usuels&nbsp;!<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-66e874b3\"><h3 class=\"uagb-heading-text\">2.1.1. Les directives<\/h3><\/div>\n\n\n\n<p>Le comportement d\u2019Apache est contr\u00f4l\u00e9 par un ensemble d\u2019instructions appel\u00e9es <em>directives<\/em>. Ces directives se d\u00e9composent en deux groupes&nbsp;: les directives <em>natives<\/em>, disponibles sur toute installation d\u2019Apache, et les directives d\u2019<em>extension<\/em>, li\u00e9es aux extensions install\u00e9es sur un serveur Apache particulier.<\/p>\n\n\n\n<p>Une directive est g\u00e9n\u00e9ralement constitu\u00e9e d\u2019un nom de directive et de param\u00e8tres s\u00e9par\u00e9s par des espaces, sauf en ce qui concerne les directives appel\u00e9es \u00ab&nbsp;conteneurs&nbsp;\u00bb (voir plus bas). Le nom des directives est insensible \u00e0 la casse (vous pouvez donc les \u00e9crire avec ou sans majuscules) mais on les \u00e9crit g\u00e9n\u00e9ralement en Camel case<a href=\"https:\/\/luc.frama.io\/cours-asrall\/serveurs_web\/2_configuration_de_base.html#fn1\"><sup>1<\/sup><\/a>.<\/p>\n\n\n\n<p>Exemple&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;shell&quot;,&quot;mime&quot;:&quot;text\/x-sh&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;Shell&quot;,&quot;modeName&quot;:&quot;shell&quot;}\">ServerRoot \/var\/www\/html<\/pre><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-02a9a080\"><h3 class=\"uagb-heading-text\">2.1.2. Les conteneurs<\/h3><\/div>\n\n\n\n<p>Les conteneurs sont des directives sp\u00e9ciales sous forme de balises ouvrantes et fermantes qui vont permettre de limiter la port\u00e9e des directives encadr\u00e9es par ces balises. La balise ouvrante poss\u00e9dera g\u00e9n\u00e9ralement un ou des param\u00e8tres s\u00e9par\u00e9s par des espaces (mais peut aussi parfois ne pas en n\u00e9cessiter).<\/p>\n\n\n\n<p>Exemple&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;HTML&quot;,&quot;modeName&quot;:&quot;html&quot;}\">&lt;Directory \/var\/www\/html\/&gt;\n    DirectoryIndex tennant.html index.html\n&lt;\/Directory&gt;<\/pre><\/div>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-5cd0e2ca\"><h3 class=\"uagb-heading-text\">2.1.3. Organisation de la configuration<\/h3><\/div>\n\n\n\n<p>Sur certaines distributions, le fichier de configuration principal, <code>apache2.conf<\/code> est organis\u00e9 de fa\u00e7on \u00e0 sous-traiter les directives qu\u2019il est sens\u00e9 contenir \u00e0 d\u2019autres fichiers, contenus parfois dans des sous-r\u00e9pertoires du r\u00e9pertoire principal d\u2019installation. L\u2019inclusion de sous-r\u00e9pertoires permet de s\u00e9parer le configuration en petits blocs facilement rep\u00e9rables, comme <code>conf-available\/security.conf<\/code>. Ce m\u00e9canisme est utilis\u00e9 afin de faciliter la maintenance d\u2019Apache par rapport \u00e0 la philosophie de ces distributions.<\/p>\n\n\n\n<p>Sur Debian, par exemple, il faut consid\u00e9rer le fichier <code>apache2.conf<\/code> pour la configuration principale d\u2019Apache, les sous-r\u00e9pertoires <code>conf-available<\/code> pour des morceaux de configurations suppl\u00e9mentaires disponibles, et <code>conf-enabled<\/code> pour les morceaux de configurations suppl\u00e9mentaires actifs (c\u2019est-\u00e0-dire effectivement pris en compte par Apache), les sous-r\u00e9pertoires <code>mod-available<\/code> et <code>mod-enabled<\/code>pour les modules d\u2019extension disponibles et actifs et enfin les sous-r\u00e9pertoires <code>sites-available<\/code> et <code>sites-enabled<\/code> pour la configuration des h\u00f4tes virtuels (les sites web) disponibles et actifs.<\/p>\n\n\n\n<p>Exemple d\u2019organisation de la configuration d\u2019Apache dans Debian&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;shell&quot;,&quot;mime&quot;:&quot;text\/x-sh&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;Shell&quot;,&quot;modeName&quot;:&quot;shell&quot;}\">\/etc\/apache2\n\u251c\u2500\u2500 apache2.conf\n\u251c\u2500\u2500 conf-available\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 apache2-doc.conf\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 big_files_no_cache.conf\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 \u2026\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 serve-cgi-bin.conf\n\u251c\u2500\u2500 conf-enabled\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 big_files_no_cache.conf -&gt; ..\/conf-available\/big_files_no_cache.conf\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 \u2026\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 serve-cgi-bin.conf -&gt; ..\/conf-available\/serve-cgi-bin.conf\n\u251c\u2500\u2500 envvars\n\u251c\u2500\u2500 magic\n\u251c\u2500\u2500 mods-available\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 access_compat.load\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 alias.conf\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 alias.load\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 \u2026\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 setenvif.conf\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 setenvif.load\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 ssl.conf\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 ssl.load\n\u251c\u2500\u2500 mods-enabled\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 access_compat.load -&gt; ..\/mods-available\/access_compat.load\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 alias.conf -&gt; ..\/mods-available\/alias.conf\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 alias.load -&gt; ..\/mods-available\/alias.load\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 \u2026\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 ssl.conf -&gt; ..\/mods-available\/ssl.conf\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 ssl.load -&gt; ..\/mods-available\/ssl.load\n\u251c\u2500\u2500 ports.conf\n\u251c\u2500\u2500 sites-available\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 000-default.conf\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 exemple.org\n\u251c\u2500\u2500 sites-enabled\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 000-default -&gt; ..\/sites-available\/000-default.conf\n\u2514\u2500\u2500 ssl.conf<\/pre><\/div>\n\n\n\n<p><strong>Attention&nbsp;!<\/strong> Pour activer un morceau de configuration, un module ou un site disponible, on ne d\u00e9place pas son fichier de <code>xxx-available<\/code> vers <code>xxx-enabled<\/code>. On se contentera de faire un lien symbolique vers le fichier, par exemple&nbsp;: <code>ln -s ..\/conf-available\/apache2-doc.conf \/etc\/apache2\/conf-enabled<\/code>.<\/p>\n\n\n\n<p>Cette mani\u00e8re de faire permet de conserver les fichiers de configuration disponibles pour les activer et les d\u00e9sactiver \u00e0 loisir, sans risquer de les supprimer d\u00e9finitivement. \u00c0 noter que Debian fournit des utilitaires simplifiant l\u2019activation et la d\u00e9sactivation des fichiers de configuration disponibles&nbsp;:<\/p>\n\n\n\n<ul>\n<li><code>a2enconf<\/code> pour activer un morceau de configuration disponible, <code>a2disconf<\/code> pour le d\u00e9sactiver&nbsp;;<\/li>\n\n\n\n<li><code>a2enmod<\/code> et <code>a2dismod<\/code> pour activer et d\u00e9sactiver des modules&nbsp;;<\/li>\n\n\n\n<li><code>a2ensite<\/code> et <code>a2dissite<\/code> pour activer et d\u00e9sactiver des sites.<\/li>\n<\/ul>\n\n\n\n<p>Avec l\u2019exemple pr\u00e9c\u00e9dent, cela donnerait\u00a0: <code>a2enconf apache2-doc<\/code>.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-6647e712\"><h3 class=\"uagb-heading-text\">2.1.4. Port\u00e9e et contexte des directives<\/h3><\/div>\n\n\n\n<p>Chaque directive agit dans un contexte<a href=\"https:\/\/luc.frama.io\/cours-asrall\/serveurs_web\/2_configuration_de_base.html#fn2\"><sup>2<\/sup><\/a> particulier, c\u2019est \u00e0 dire que son action est limit\u00e9e \u00e0 ce contexte. Il est important de conna\u00eetre et de comprendre ces contextes pour mesurer la <em>port\u00e9e<\/em> des directives qui y sont d\u00e9finies.<\/p>\n\n\n\n<p>Les quatre contextes existants sous Apache sont&nbsp;:<\/p>\n\n\n\n<ul>\n<li><em>Le contexte de configuration globale<\/em> du serveur. Ce contexte contient des directives qui ne peuvent \u00eatre pr\u00e9sentes qu\u2019\u00e0 cet endroit (comme par exemple <code>PidFile<\/code>, qui d\u00e9finit le fichier o\u00f9 Apache \u00e9crira son PID<a href=\"https:\/\/luc.frama.io\/cours-asrall\/serveurs_web\/2_configuration_de_base.html#fn3\"><sup>3<\/sup><\/a>), ainsi que d\u2019autres directives pouvant \u00eatre \u00e9galement d\u00e9finies dans d\u2019autres contextes. Pour ces derni\u00e8res directives, une d\u00e9finition dans le contexte de configuration globale du serveur permet de fixer une valeur par d\u00e9faut \u00e0 ces directives dans le cas o\u00f9 elles ne sont pas red\u00e9finies dans d\u2019autres contextes.<\/li>\n\n\n\n<li><em>Le contexte d\u2019h\u00f4te virtuel<\/em>, d\u00e9fini par le conteneur <code>&lt;VirtualHost&gt;<\/code>.<\/li>\n\n\n\n<li><em>Le contexte r\u00e9pertoire<\/em>. Ce contexte inclut les directives inclues dans un des 5 conteneurs suivant&nbsp;: <code>&lt;Directory&gt;<\/code> (relatif au r\u00e9pertoire utilis\u00e9 pour r\u00e9pondre \u00e0 la requ\u00eate), <code>&lt;Files&gt;<\/code> (relatif au fichier suppos\u00e9 \u00eatre renvoy\u00e9), <code>&lt;Location&gt;<\/code> (relatif \u00e0 l\u2019URI demand\u00e9e), <code>&lt;If&gt;<\/code> et <code>&lt;Proxy&gt;<\/code>.<\/li>\n\n\n\n<li><em>Le contexte <code>.htaccess<\/code><\/em>. Un fichier <code>.htaccess<\/code> est un fichier de configuration compl\u00e9mentaire pouvant \u00eatre plac\u00e9 dans les r\u00e9pertoires contenant les fichiers servis par Apache. Le but de ces fichiers est de d\u00e9centraliser les directives li\u00e9es \u00e0 Apache, en permettant par exemple \u00e0 un utilisateur \u00ab&nbsp;lambda&nbsp;\u00bb (c\u2019est-\u00e0-dire non privil\u00e9gi\u00e9) de configurer les requ\u00eates li\u00e9es aux donn\u00e9es qui le concerne sans avoir \u00e0 modifier le fichier <code>apache2.conf<\/code> (ce qu\u2019il ne peut pas faire normalement de toute fa\u00e7on).<\/li>\n<\/ul>\n\n\n\n<p><strong>Attention<\/strong>&nbsp;: certaines directives peuvent \u00eatre utilis\u00e9e dans tous les contextes, d\u2019autres uniquement dans un ou plusieurs contextes particuliers. La documentation officielle vous permettra de savoir dans quel contexte vous pouvez utiliser la directive souhait\u00e9e.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-bf7f1936\"><h3 class=\"uagb-heading-text\">2.1.5. Configuration du contexte de configuration globale du serveur<\/h3><\/div>\n\n\n\n<p>Voici quelques directives utilisables dans le contexte de configuration globale. Certaines lui sont propres (et donc ne peuvent \u00eatre utilis\u00e9es dans un autre contexte) et d\u2019autres non (d\u00e9finissant ainsi les valeurs par d\u00e9faut de ces directives comme vu plus haut).<\/p>\n\n\n\n<ul>\n<li><code>Servername<\/code>&nbsp;: contient le nom d\u2019h\u00f4te (nom de domaine) et le port que le serveur utilise pour s\u2019authentifier lui-m\u00eame. Plac\u00e9e dans un contexte d\u2019<em>h\u00f4te virtuel<\/em>, cette directive d\u00e9finit g\u00e9n\u00e9ralement le nom de domaine auquel r\u00e9pondra le site configur\u00e9.<\/li>\n\n\n\n<li><code>ServerRoot<\/code>&nbsp;: correspond au r\u00e9pertoire d\u2019installation d\u2019Apache, contenant en particulier ses fichiers de configuration (<code>\/etc\/apache2<\/code> sur Debian). Il est possible de changer au d\u00e9marrage d\u2019Apache la valeur donn\u00e9e par cette directive gr\u00e2ce \u00e0 l\u2019option <code>-d<\/code>. C\u2019est \u00e0 partir de ce r\u00e9pertoire que seront calcul\u00e9s les chemins relatifs contenus dans les autres directives (comme <code>Include<\/code> par exemple).<\/li>\n\n\n\n<li><code>Include<\/code>&nbsp;: charge la configuration contenue dans les fichiers ou dossiers sp\u00e9cifi\u00e9s (exemple : <code>Include ports.conf<\/code>)<\/li>\n\n\n\n<li><code>IncludeOptional<\/code> : charge la configuration contenue dans les fichiers ou dossiers sp\u00e9cifi\u00e9s mais ne g\u00e9n\u00e8re pas d\u2019erreur si ceux-ci n\u2019existent pas (exemple : <code>IncludeOptional conf-enabled\/*.conf<\/code>)<\/li>\n\n\n\n<li><code>DocumentRoot<\/code>&nbsp;: permet de d\u00e9finir la racine des documents distribu\u00e9s par Apache (le r\u00e9pertoire o\u00f9 chercher les fichiers). Ce chemin est ainsi utilis\u00e9 comme base pour le calcul des noms de fichiers correspondant aux requ\u00eates re\u00e7ues par le serveur.<\/li>\n\n\n\n<li><code>ErrorDocument<\/code>&nbsp;: permet de changer le comportement par d\u00e9faut d\u2019Apache lorsqu\u2019une erreur est rencontr\u00e9e. Cette directive permet une red\u00e9finition par code d\u2019erreur, en affichant un message diff\u00e9rent ou en redirigeant la requ\u00eate vers un document traitant l\u2019erreur en question. Cela permettra par exemple d\u2019afficher une page 404 personnalis\u00e9e.<\/li>\n\n\n\n<li><code>User<\/code> et <code>Group<\/code>&nbsp;: permettent de d\u00e9finir sous quelle identit\u00e9 s\u2019ex\u00e9cuteront les fils du processus principal Apache.<\/li>\n\n\n\n<li><code>DirectoryIndex<\/code>&nbsp;: d\u00e9finit dans l\u2019ordre la liste des fichiers qui doivent \u00eatre recherch\u00e9s lorsqu\u2019une requ\u00eate concerne un r\u00e9pertoire (par exemple <code>DirectoryIndex index.html index.php index.htm<\/code>). Le premier fichier pr\u00e9sent est renvoy\u00e9.<\/li>\n\n\n\n<li><code>Options<\/code>\u00a0: permet de contr\u00f4ler certaines fonctionnalit\u00e9s du serveur dans un r\u00e9pertoire particulier. Cette directive peut \u00eatre associ\u00e9e aux valeurs suivantes (un \u00ab\u00a0+\u00a0\u00bb en pr\u00e9fixe d\u2019une valeur force l\u2019activation de cette option \u2014\u00a0action par d\u00e9faut\u00a0\u2014 et un \u00ab\u00a0&#8211;\u00a0\u00bb en force la d\u00e9sactivation. Notez que toutes les valeurs doivent \u00eatre pr\u00e9fix\u00e9es, ou aucune\u00a0: il n\u2019est pas possible de mixer des valeurs avec ou sans pr\u00e9fixe)\u00a0:\n<ul>\n<li><code>ExecCGI<\/code>&nbsp;: autorise l\u2019ex\u00e9cution de script CGI<\/li>\n\n\n\n<li><code>FollowSymLinks<\/code>&nbsp;: le serveur peut suivre les liens symboliques de ce r\u00e9pertoire, mais cela ne change pas la correspondance \u00e9tablie avec les sections <code>&lt;Directory&gt;<\/code>.<\/li>\n\n\n\n<li><code>Includes<\/code>&nbsp;: autorise les SSI<a href=\"https:\/\/luc.frama.io\/cours-asrall\/serveurs_web\/2_configuration_de_base.html#fn4\"><sup>4<\/sup><\/a> (<em>Server-Side Includes<\/em>, un langage de programmation interpr\u00e9t\u00e9 par les serveurs web)<\/li>\n\n\n\n<li><code>IncludesNOEXEC<\/code>&nbsp;: autorise les SSI, mais leurs commandes <code>#exec<\/code> et <code>#include<\/code> sont d\u00e9sactiv\u00e9es<\/li>\n\n\n\n<li><code>Indexes<\/code>&nbsp;: renvoie une liste format\u00e9e de ce r\u00e9pertoire si une requ\u00eate concernant ce r\u00e9pertoire est \u00e9tablie et qu\u2019il n\u2019existe pas de fichier correspondant \u00e0 une des valeurs de la directive <code>DirectoryIndex<\/code>.<\/li>\n\n\n\n<li><code>Multiviews<\/code>&nbsp;: autorise les multiviews \u00e0 contenu n\u00e9goci\u00e9 (par exemple pour fournir <code>foo.fr.html<\/code> ou <code>foo.en.html<\/code> selon la pr\u00e9f\u00e9rence du navigateur quand la ressource <code>foo<\/code> est demand\u00e9e)<\/li>\n\n\n\n<li><code>SymLinksIfOwnerMatch<\/code>&nbsp;: suit les liens symboliques dont le fichier ou le r\u00e9pertoire appartient au m\u00eame utilisateur que le lien.<\/li>\n\n\n\n<li><code>All<\/code>&nbsp;: inclut toutes les options, sauf <code>Multiviews<\/code>. C\u2019est la valeur par d\u00e9faut.<\/li>\n\n\n\n<li><code>None<\/code>&nbsp;: aucune de ces options.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>IndexOptions<\/code> (avec la valeur <code>FancyIndexing<\/code>)&nbsp;: fournit un listage du contenu des r\u00e9pertoires plus agr\u00e9able lorsque l\u2019option <code>Indexes<\/code> est activ\u00e9e.<\/li>\n<\/ul>\n<\/div><\/div><\/div><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-border-color has-vivid-cyan-blue-border-color has-background is-layout-flow\" style=\"border-style:dotted;border-width:2px;border-radius:8px;background-color:#fffdf8;padding-right:7px;padding-bottom:15px;padding-left:7px\">\n<h2 class=\"has-text-color wp-block-heading\" id=\"1-i-pr%C3%A9sentation\" style=\"color:#fffdf8;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;font-size:1px\">2.1. Configuration de base de Nginx<\/h2>\n\n\n\n<div class=\"qubely-block-accordion  qubely-block-d34844\" data-item-toggle=\"true\">\n<div class=\"wp-block-qubely-accordion-item qubely-block-31f687\"><div class=\"qubely-accordion-item qubely-type-fill qubely-accordion-active\"><div class=\"qubely-accordion-panel qubely-icon-position-right\"><span class=\"qubely-accordion-panel-handler\" role=\"button\"><span class=\"qubely-accordion-panel-handler-label\">2.2. Configuration de base de Nginx<\/span><span class=\"qubely-accordion-icon fa fa-plus\"><\/span><\/span><\/div><div class=\"qubely-accordion-body\" style=\"display:block\"><div itemprop=\"text\">\n<p>La documentation officielle, <a href=\"https:\/\/nginx.org\/en\/docs\/\">https:\/\/nginx.org\/en\/docs\/<\/a> vous sera, ici aussi, tr\u00e8s pr\u00e9cieuse. Tout particuli\u00e8rement les pages <a href=\"https:\/\/nginx.org\/en\/docs\/dirindex.html\">https:\/\/nginx.org\/en\/docs\/dirindex.html<\/a> et <a href=\"https:\/\/nginx.org\/en\/docs\/varindex.html\">https:\/\/nginx.org\/en\/docs\/varindex.html<\/a>. Cr\u00e9ez-vous des marque-pages dans votre navigateur&nbsp;!<\/p>\n\n\n\n<p>Comme pour Apache, on retrouvera g\u00e9n\u00e9ralement un d\u00e9coupage de la configuration en plusieurs fichiers r\u00e9partis dans diff\u00e9rents r\u00e9pertoires.<\/p>\n\n\n\n<p>Sur Debian&nbsp;:<\/p>\n\n\n\n<ul>\n<li><code>nginx.conf<\/code>&nbsp;: fichier de configuration g\u00e9n\u00e9rale, qui contient des inclusions d\u2019autres fichiers de configuration&nbsp;;<\/li>\n\n\n\n<li><code>modules-available<\/code> et <code>modules-enabled<\/code>: dossiers contenant les fichiers permettant l\u2019activation des modules de Nginx&nbsp;;<\/li>\n\n\n\n<li><code>conf.d<\/code>&nbsp;: contient des fichiers de configuration g\u00e9n\u00e9rale pour le serveur web (Nginx peut aussi faire office de proxy mail mais la configuration de cette fonctionnalit\u00e9 ne se fera pas dans <code>conf.d<\/code>)&nbsp;;<\/li>\n\n\n\n<li><code>sites-available<\/code> et <code>sites-enabled<\/code>&nbsp;: dossiers contenant la configuration des h\u00f4tes virtuels.<\/li>\n<\/ul>\n\n\n\n<p>Le dossier <code>snippets<\/code> est particulier&nbsp;: il ne fait pas l\u2019objet d\u2019inclusions dans la configuration de base. Il est l\u00e0 pour vous permettre de ranger des bouts de configuration que vous pourrez alors vous-m\u00eame inclure dans vos configurations d\u2019h\u00f4tes virtuels. L\u2019int\u00e9r\u00eat est de mutualiser la configuration (\u00e0 quoi bon \u00e9crire 20 fois le m\u00eame bout de configuration alors qu\u2019une inclusion est plus rapide&nbsp;?).<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-2b5ff82d\"><h3 class=\"uagb-heading-text\">2.2.1. Directives et contextes<\/h3><\/div>\n\n\n\n<p>Les contextes Nginx n\u2019ont rien \u00e0 voir avec les contextes d\u2019Apache.<\/p>\n\n\n\n<ul>\n<li>une directive est constitu\u00e9e d\u2019un nom de directive, de param\u00e8tres s\u00e9par\u00e9s par des espaces et se terminant par un point-virgule&nbsp;: <code>listen 80;<\/code><\/li>\n\n\n\n<li>les contextes ont une structure similaire \u00e0 ceci pr\u00e8s qu\u2019ils se terminent par des accolades encadrant des directives ou des contextes suppl\u00e9mentaires&nbsp;: <code>http { server { server_name example.org; } }<\/code><\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-9d9a1acb\"><h3 class=\"uagb-heading-text\">2.2.2. Port\u00e9e de directives<\/h3><\/div>\n\n\n\n<p>Les directives peuvent \u00eatre positionn\u00e9es dans z\u00e9ro, un ou plusieurs contextes. Lorsqu\u2019elles ne peuvent \u00eatre positionn\u00e9es dans aucun contexte, on parlera du contexte <code>main<\/code>, correspondant plus ou moins<a href=\"https:\/\/luc.frama.io\/cours-asrall\/serveurs_web\/2_configuration_de_base.html#fn5\"><sup>5<\/sup><\/a> au contexte de configuration globale d\u2019Apache vu pr\u00e9c\u00e9demment.<\/p>\n\n\n\n<p>Les contextes possibles pour une directive peuvent varier selon cette directive (tout comme pour Apache). Ainsi, si <code>internal<\/code> ne peut \u00eatre plac\u00e9 que dans le contexte <code>location<\/code>, la directive <code>ignore_invalid_headers<\/code> peut \u00eatre plac\u00e9e dans les contextes <code>http<\/code> et <code>server<\/code>.<\/p>\n\n\n\n<p>Pour trouver dans quel contexte doit se situer une directive, reportez-vous \u00e0 la documentation officielle. La liste alphab\u00e9tique des directives et des contextes est disponible sur <a href=\"https:\/\/nginx.org\/en\/docs\/dirindex.html\">https:\/\/nginx.org\/en\/docs\/dirindex.html<\/a>.<\/p>\n<\/div><\/div><\/div><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-border-color has-vivid-cyan-blue-border-color has-background is-layout-flow\" style=\"border-style:dotted;border-width:2px;border-radius:8px;background-color:#fffdf8;padding-right:7px;padding-bottom:15px;padding-left:7px\">\n<h2 class=\"has-text-color wp-block-heading\" id=\"1-i-pr%C3%A9sentation\" style=\"color:#fffdf8;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;font-size:1px\">2.3. Diff\u00e9rences et comparaison des contextes et directives Apache et Nginx<\/h2>\n\n\n\n<div class=\"qubely-block-accordion  qubely-block-d34844\" data-item-toggle=\"true\">\n<div class=\"wp-block-qubely-accordion-item qubely-block-0b768f\"><div class=\"qubely-accordion-item qubely-type-fill qubely-accordion-active\"><div class=\"qubely-accordion-panel qubely-icon-position-right\"><span class=\"qubely-accordion-panel-handler\" role=\"button\"><span class=\"qubely-accordion-panel-handler-label\">2.3. Diff\u00e9rences et comparaison des contextes et directives Apache et Nginx<\/span><span class=\"qubely-accordion-icon fa fa-plus\"><\/span><\/span><\/div><div class=\"qubely-accordion-body\" style=\"display:block\"><div itemprop=\"text\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-8e11d9a6\"><h3 class=\"uagb-heading-text\">2.3.1. Les contextes<\/h3><\/div>\n\n\n\n<p><strong>!!! ATTENTION !!!<\/strong> Ne pas confondre les contextes Apache et Nginx, j\u2019utilise le m\u00eame terme mais ils ne d\u00e9signent pas la m\u00eame chose.<\/p>\n\n\n\n<p>Les contextes Nginx sont plut\u00f4t similaires aux conteneurs d\u2019Apache&nbsp;: un \u00e9l\u00e9ment encadrant une ou des directives, ce qui en limite la port\u00e9e. Par exemple, pour une directive n\u2019agissant que pour le chemin <code>\/private\/<\/code> (ex : <code>https:\/\/exemple.org\/private\/<\/code>), on aura pour Apache :<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;HTML&quot;,&quot;modeName&quot;:&quot;html&quot;}\">&lt;Location \/private\/&gt;\n    Require all denied\n&lt;\/Location&gt;<\/pre><\/div>\n\n\n\n<p>Et pour Nginx&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;css&quot;,&quot;mime&quot;:&quot;text\/css&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;CSS&quot;,&quot;modeName&quot;:&quot;css&quot;}\">location \/private\/ {\n    deny all;\n}<\/pre><\/div>\n\n\n\n<h4 class=\"has-vivid-purple-color has-text-color has-medium-font-size wp-block-heading\" id=\"principe-du-web\" style=\"text-transform:none\"><strong>A. Contexte de configuration globale du serveur<\/strong><\/h4>\n\n\n\n<p>Si le contexte <code>main<\/code> ressemble au contexte de configuration globale d\u2019Apache, il existe toutefois une diff\u00e9rence de taille. En effet, Nginx n\u2019est pas qu\u2019un serveur web, il peut aussi faire office de proxy mail.<\/p>\n\n\n\n<p>D\u00e8s lors, les directives du contexte de configuration globale d\u2019Apache relatives au programme lui-m\u00eame (<code>User<\/code> et <code>Group<\/code>) auront bien g\u00e9n\u00e9ralement des directives \u00e9quivalentes (<code>user<\/code>, qui permet aussi de d\u00e9finir le groupe auquel appartient le processus), tandis que celles qui ne sont utiles que dans le cadre d\u2019un serveur web, comme <code>ErrorDocument<\/code>, auront une directive \u00e9quivalente \u00e0 placer dans le contexte <code>http<\/code>.<\/p>\n\n\n\n<p>Et d\u2019autres, bien qu\u2019on puisse penser qu\u2019elles pourraient se placer dans le contexte <code>http<\/code> puisqu\u2019\u00e9tant dans le contexte de configuration globale d\u2019Apache, ne pourront se placer que dans <code>server<\/code> (par exemple).<\/p>\n\n\n\n<h4 class=\"has-vivid-purple-color has-text-color has-medium-font-size wp-block-heading\" id=\"principe-du-web\" style=\"text-transform:none\"><strong>B. Contexte d\u2019h\u00f4te virtuel<\/strong><\/h4>\n\n\n\n<p>Le contexte d\u2019h\u00f4te virtuel d\u2019Apache est comparable au contexte <code>server<\/code> de Nginx (\u00e9quivalent du conteneur <code>&lt;Virtualhost&gt;<\/code> d\u2019Apache).<\/p>\n\n\n\n<h4 class=\"has-vivid-purple-color has-text-color has-medium-font-size wp-block-heading\" id=\"principe-du-web\" style=\"text-transform:none\"><strong>C. Contexte r\u00e9pertoire<\/strong><\/h4>\n\n\n\n<p>Le contexte r\u00e9pertoire d\u2019Apache n\u2019a pas vraiment d\u2019\u00e9quivalent strict, tant sont diverses les combinaisons entre directives et contextes dans lesquels on peut les placer.<\/p>\n\n\n\n<p>On pourra obtenir des \u00e9quivalences sur certaines configurations, comme entre le conteneur Apache <code>&lt;Location&gt;<\/code> et le contexte Nginx <code>location {}<\/code>, alors que d\u2019autres configurations seront tout simplement impossibles \u00e0 transcrire de fa\u00e7on similaire pour les m\u00eames buts.<\/p>\n\n\n\n<h4 class=\"has-vivid-purple-color has-text-color has-medium-font-size wp-block-heading\" id=\"principe-du-web\" style=\"text-transform:none\"><strong>D. Contexte .htaccess<\/strong><\/h4>\n\n\n\n<p>Le contexte <code>.htaccess<\/code> n\u2019existe tout simplement pas avec Nginx. Ceci poss\u00e8de des avantages et des inconv\u00e9nients&nbsp;:<\/p>\n\n\n\n<ul>\n<li>on ne peut laisser la possibilit\u00e9 \u00e0 un utilisateur \u00ab&nbsp;lambda&nbsp;\u00bb de modifier le comportement du serveur dans les r\u00e9pertoires le concernant&nbsp;: on risque donc plus d\u2019avoir des demandes d\u2019utilisateur. De plus, de nombreux projets proposent des fichiers <code>.htaccess<\/code> pour adapter le serveur aux besoins particuliers du projet&nbsp;: il faudra traduire ces besoins en configuration Nginx (ce sont g\u00e9n\u00e9ralement des r\u00e9\u00e9critures d\u2019URL, un vrai bonheur \u00e0 traduire).<\/li>\n\n\n\n<li>par contre, cela \u00e9vite les erreurs de configuration des utilisateurs, sur lesquelles on s\u2019arrache parfois les cheveux \u00e0 cause d\u2019un <code>.htaccess<\/code> mal configur\u00e9.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-b85dbf99\"><h3 class=\"uagb-heading-text\">2.3.2. \u00c9quivalents Nginx des directives de configuration du contexte de configuration globale d\u2019Apache<\/h3><\/div>\n\n\n\n<p>Certaines directives pourront prendre place dans le contexte Nginx <code>main<\/code>, d\u2019autres dans <code>http<\/code> et d\u2019autres encore dans d\u2019autres contextes.<\/p>\n\n\n\n<ul>\n<li><code>Servername<\/code>&nbsp;: <code>server_name<\/code> (contexte&nbsp;: <code>server<\/code>).<\/li>\n\n\n\n<li><code>ServerRoot<\/code>&nbsp;: pas de directive \u00e9quivalente. Correspond \u00e0 l\u2019option <code>--prefix<\/code> utilis\u00e9e lors de la compilation.<\/li>\n\n\n\n<li><code>Include<\/code>&nbsp;: <code>include<\/code> (contextes&nbsp;: tous)<\/li>\n\n\n\n<li><code>IncludeOptional<\/code>&nbsp;: pas de directive \u00e9quivalente.<\/li>\n\n\n\n<li><code>DocumentRoot<\/code>&nbsp;: <code>root<\/code> (contextes&nbsp;: <code>http<\/code>, <code>server<\/code>, <code>location<\/code>, <code>if<\/code> in <code>location<\/code>).<\/li>\n\n\n\n<li><code>ErrorDocument<\/code>&nbsp;: <code>error_page<\/code> (contextes&nbsp;: <code>http<\/code>, <code>server<\/code>, <code>location<\/code>, <code>if<\/code> in <code>location<\/code>), mais ne permet pas de sp\u00e9cifier de message. Uniquement une page ou une redirection.<\/li>\n\n\n\n<li><code>User<\/code> et <code>Group<\/code>&nbsp;: <code>user<\/code> (contexte&nbsp;:<code>main<\/code>).<\/li>\n\n\n\n<li><code>DirectoryIndex<\/code>&nbsp;: <code>index<\/code> (contextes&nbsp;: <code>http<\/code>, <code>server<\/code>, <code>location<\/code>).<\/li>\n\n\n\n<li><code>Options<\/code>\u00a0: pas d\u2019\u00e9quivalent, mais on trouve parfois des directives \u00e9quivalentes pour les options.\n<ul>\n<li><code>ExecCGI<\/code>&nbsp;: pas d\u2019\u00e9quivalent.<\/li>\n\n\n\n<li><code>FollowSymLinks<\/code>&nbsp;: <code>disable_symlinks<\/code> (contextes&nbsp;: <code>http<\/code>, <code>server<\/code>, <code>location<\/code>).<\/li>\n\n\n\n<li><code>Includes<\/code>&nbsp;: <code>ssi<\/code> (contextes&nbsp;: <code>http<\/code>, <code>server<\/code>, <code>location<\/code>, <code>if<\/code> in <code>location<\/code>).<\/li>\n\n\n\n<li><code>IncludesNOEXEC<\/code>&nbsp;: pas d\u2019\u00e9quivalent.<\/li>\n\n\n\n<li><code>Indexes<\/code>&nbsp;: <code>autoindex<\/code> (contextes&nbsp;: <code>http<\/code>, <code>server<\/code>, <code>location<\/code>).<\/li>\n\n\n\n<li><code>Multiviews<\/code>&nbsp;: pas d\u2019\u00e9quivalent.<\/li>\n\n\n\n<li><code>SymLinksIfOwnerMatch<\/code>&nbsp;: voir <code>disable_symlinks<\/code>.<\/li>\n\n\n\n<li><code>All<\/code> et <code>None<\/code>&nbsp;: pas d\u2019\u00e9quivalent.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>IndexOptions<\/code>&nbsp;: pas d\u2019\u00e9quivalent.<\/li>\n<\/ul>\n<\/div><\/div><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column uag-hide-tab uag-hide-mob is-layout-flow\" style=\"flex-basis:170px\">\n\n<div class=\"cleanlogin-container\">\t\t\n\n\t<form class=\"cleanlogin-form\" method=\"post\" action=\"https:\/\/www.webodesign.net\/?page_id=2385\" onsubmit=\"submit.disabled = true; return true;\">\n\t\t\t\n\t\t<fieldset>\n\n\t\t\t\t\t\t<div class=\"cleanlogin-field\">\n                <label for=\"log\">Identifiant<\/label>\n\t\t\t\t<input class=\"cleanlogin-field-username\" type=\"text\" name=\"log\" placeholder=\"Identifiant\" aria-label=\"Identifiant\">\n\t\t\t<\/div>\n\t\t\t\n\t\t\t<div class=\"cleanlogin-field\">\n                <label for=\"pwd\">Mot de passe<\/label>\n\t\t\t\t<input class=\"cleanlogin-field-password\" type=\"password\" id=\"pwd\" name=\"pwd\" placeholder=\"Mot de passe\" aria-label=\"Mot de passe\">\n                <i class=\"bi bi-eye-slash\" id=\"togglePassword\"><\/i>\n\t\t\t<\/div>\n\n\t\t\t\t\t\n\t\t\t<input type=\"hidden\" name=\"clean_login_wpnonce\" value=\"e994c14fba\">\n            \n\t\t\t\t\t<\/fieldset>\n\t\t\n\t\t<fieldset>\n\t\t\t<input class=\"cleanlogin-field\" type=\"submit\" value=\"Se connecter\" name=\"submit\">\n\t\t\t<input type=\"hidden\" name=\"action\" value=\"login\">\n\t\t\t\n\t\t\t<div class=\"cleanlogin-field cleanlogin-field-remember\">\n\t\t\t\t<input type=\"checkbox\" id=\"rememberme\" name=\"rememberme\" value=\"forever\">\n\t\t\t\t<label for=\"rememberme\">Se souvenir de moi\u00a0?<\/label>\n\t\t\t<\/div>\n\t\t<\/fieldset>\n\n\t\t\n\t\t<div class=\"cleanlogin-form-bottom\">\n\t\t\t\n            \n\t\t\t\t\t\t\t\t\t\n\t\t<\/div>\n\t\t\n\t<\/form>\n\n<\/div>\n\n<script>\nconst togglePassword = document.querySelector('#togglePassword');\nconst password = document.querySelector('#pwd');\n\ntogglePassword.addEventListener('click', function (e) {\n    const type = password.getAttribute('type') === 'password' ? 'text' : 'password';\n    password.setAttribute('type', type);\n    this.classList.toggle('bi-eye');\n});\n<\/script>\n<\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>2. Configuration de base 2.1. Configuration de base d\u2019Apache 2.1. Configuration de base de Nginx 2.3. Diff\u00e9rences et comparaison des contextes et directives Apache et Nginx<\/p>\n","protected":false},"author":3,"featured_media":2270,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"qubely_global_settings":"","qubely_interactions":"","_uag_custom_page_level_css":""},"categories":[16],"tags":[],"qubely_featured_image_url":{"full":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02.jpg",940,490,false],"landscape":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02.jpg",940,490,false],"portraits":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02-540x320.jpg",540,320,true],"thumbnail":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02-150x150.jpg",150,150,true],"medium":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02-300x156.jpg",300,156,true],"medium_large":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02-768x400.jpg",768,400,true],"large":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02.jpg",940,490,false],"1536x1536":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02.jpg",940,490,false],"2048x2048":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02.jpg",940,490,false],"qubely_landscape":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02.jpg",940,490,false],"qubely_portrait":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02-540x320.jpg",540,320,true],"qubely_thumbnail":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02-140x100.jpg",140,100,true]},"qubely_author":{"display_name":"R\u00e9mi","author_link":"https:\/\/www.webodesign.net\/?author=3"},"qubely_comment":0,"qubely_category":"<a href=\"https:\/\/www.webodesign.net\/?cat=16\" rel=\"category\">Tutoriels Linux-Debian<\/a>","qubely_excerpt":"2. Configuration de base 2.1. Configuration de base d\u2019Apache 2.1. Configuration de base de Nginx 2.3. Diff\u00e9rences et comparaison des contextes et directives Apache et Nginx","uagb_featured_image_src":{"full":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02.jpg",940,490,false],"thumbnail":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02-150x150.jpg",150,150,true],"medium":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02-300x156.jpg",300,156,true],"medium_large":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02-768x400.jpg",768,400,true],"large":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02.jpg",940,490,false],"1536x1536":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02.jpg",940,490,false],"2048x2048":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02.jpg",940,490,false],"qubely_landscape":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02.jpg",940,490,false],"qubely_portrait":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02-540x320.jpg",540,320,true],"qubely_thumbnail":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-02-140x100.jpg",140,100,true]},"uagb_author_info":{"display_name":"R\u00e9mi","author_link":"https:\/\/www.webodesign.net\/?author=3"},"uagb_comment_info":0,"uagb_excerpt":"2. Configuration de base 2.1. Configuration de base d\u2019Apache 2.1. Configuration de base de Nginx 2.3. Diff\u00e9rences et comparaison des contextes et directives Apache et Nginx","_links":{"self":[{"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/posts\/2269"}],"collection":[{"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2269"}],"version-history":[{"count":4,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/posts\/2269\/revisions"}],"predecessor-version":[{"id":2306,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/posts\/2269\/revisions\/2306"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/media\/2270"}],"wp:attachment":[{"href":"https:\/\/www.webodesign.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}