{"id":229,"date":"2020-08-18T09:32:06","date_gmt":"2020-08-18T07:32:06","guid":{"rendered":"http:\/\/www.myblog.nguenkam.com\/?p=229"},"modified":"2020-08-19T09:49:06","modified_gmt":"2020-08-19T07:49:06","slug":"nginx-mettre-en-place-un-serveur-web","status":"publish","type":"post","link":"https:\/\/nguenkam.com\/blog\/index.php\/2020\/08\/18\/nginx-mettre-en-place-un-serveur-web\/","title":{"rendered":"Nginx &#8211; Mettre en place un serveur web"},"content":{"rendered":"\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-rich is-provider-embed-handler wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Mettre en place un serveur Web (21\/28) : Nginx\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/YD_exb9aPZU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Le principal but de notre serveur est d&#8217;h\u00e9berger des sites web. Pour cela on a besoin d&#8217;installer un serveur HTTP qui va \u00eatre capable de comprendre les requ\u00eates faites par le navigateur et de renvoyer les bonnes informations en fonction. Dans ce chapitre nous allons voir l&#8217;installation de&nbsp;<a href=\"http:\/\/nginx.org\/\">nginx<\/a>.<\/p>\n\n\n\n<h2>Pourquoi nginx ?<\/h2>\n\n\n\n<p>Nginx a \u00e9t\u00e9 con\u00e7u con\u00e7u pour r\u00e9pondre au&nbsp;<a href=\"https:\/\/fr.wikipedia.org\/wiki\/C10k_problem\">probl\u00e8me C10K<\/a>&nbsp;o\u00f9 le but est d&#8217;\u00eatre capable de r\u00e9pondre \u00e0 plus de 10 000 req\u00eates simultan\u00e9es. Nginx est du coup plus performant lors d&#8217;un traffic important avec un syst\u00e8me de worker. L\u00e0 ou apache cr\u00e9e un processus par connexion, nginx lance une s\u00e9rie de workers qui vont chacun \u00eatre capable de g\u00e9rer de multiples connexions d&#8217;une mani\u00e8re non bloquante.<\/p>\n\n\n\n<h2>Installation<\/h2>\n\n\n\n<p>L&#8217;installation se fait tr\u00e8s simplement et se fait via le gestionnaire de paquet. Si vous le souhaitez vous pouvez mettre \u00e0 jour la liste de vos d\u00e9p\u00f4t pour int\u00e9grer les&nbsp;<a href=\"http:\/\/nginx.org\/en\/linux_packages.html\">d\u00e9p\u00f4ts nginx.org<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install nginx\n<\/code><\/pre>\n\n\n\n<p>Si vous essayez de vous rendre sur votre serveur apr\u00e8s avoir install\u00e9 Nginx vous devriez d\u00e9j\u00e0 voir une page s&#8217;afficher. Cette page se trouve dans le dossier&nbsp;<code>\/usr\/share\/nginx\/html<\/code>.<\/p>\n\n\n\n<h2>Configuration<\/h2>\n\n\n\n<p>La configuration de nginx est morcel\u00e9e en plusieurs fichiers pour s&#8217;y retrouver plus facilement et se trouve dans le dossier&nbsp;<code>\/etc\/nginx<\/code>.<\/p>\n\n\n\n<ul><li>nginx.conf, contient la configuration g\u00e9n\u00e9rale<\/li><li>conf.d\/<em>.conf (ou sites-enabled\/<\/em>.conf suivant votre installation), contient la configuration des diff\u00e9rents &#8220;servers&#8221;<\/li><\/ul>\n\n\n\n<h3>Les virtual hosts<\/h3>\n\n\n\n<p>Les h\u00f4tes virtuels permettent \u00e0 Nginx de g\u00e9rer plusieurs arborescences Web en simultan\u00e9es. Si vous regardez dans le dossier&nbsp;<code>conf.d<\/code>&nbsp;vous remarquerez que vous n&#8217;avez pour le moment qu&#8217;une configuration qui est la configuration par d\u00e9faut.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 80;\n    server_name localhost;\n\n    location \/ {\n        root \/usr\/share\/nginx\/html;\n        index index.html index.htm;\n    }\n\n    error_page 500 502 503 504  \/50x.html;\n    location = \/50x.html {\n        root \/usr\/share\/nginx\/html; \n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Dans notre cas nous souhaitons faire pointer&nbsp;<code>monsupersite.fr<\/code>&nbsp;vers notre serveur, nous allons devoir cr\u00e9er un nouveau virtual host :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n\n    listen 80;\n    server_name monsupersite.fr;\n\n    # Les urls commen\u00e7ant par \/ (toutes les urls)\n    location \/ {\n        root \/home\/dev\/www;\n        index index.html index.htm;\n        try_files $uri $uri\/ $uri.html =404;\n    }\n\n    # Les urls contennant \/. (dotfiles)\n    location ~ \/\\. {\n        deny all;\n        access_log off;\n        log_not_found off;\n    }\n\n    # On va placer les logs dans un dossier accessible\n    error_log \/home\/dev\/logs\/error.log; \n    access_log \/home\/dev\/logs\/acess.log; \n\n    # Les pages d'erreurs\n    error_page 404 500 501 \/error.html;\n\n}\n\nserver {\n    # On redirige les www. vers la version sans www\n    listen 80;\n    server_name www.monsupersite.fr;\n    return 301 http:\/\/monsupersite.fr$request_uri;\n}\n<\/code><\/pre>\n\n\n\n<p>Une fois ces modifications effectu\u00e9es il ne faut pas oublier de recharger la configuration en red\u00e9marrant nginx.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Pour tester la configuration\nsudo nginx -t\n# Pour recharger la configuration\nsudo service nginx restart\n<\/code><\/pre>\n\n\n\n<h2>reference:<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.grafikart.fr\/tutoriels\/nginx-692\">https:\/\/www.grafikart.fr\/tutoriels\/nginx-692<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le principal but de notre serveur est d&#8217;h\u00e9berger des sites web. Pour cela on a besoin d&#8217;installer un serveur HTTP qui va \u00eatre capable de comprendre les requ\u00eates faites par le navigateur et de renvoyer les bonnes informations en fonction. Dans ce chapitre nous allons voir l&#8217;installation de&nbsp;nginx. Pourquoi nginx ? Nginx a \u00e9t\u00e9 con\u00e7u [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":255,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[32,31],"tags":[],"_links":{"self":[{"href":"https:\/\/nguenkam.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/229"}],"collection":[{"href":"https:\/\/nguenkam.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nguenkam.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nguenkam.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nguenkam.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=229"}],"version-history":[{"count":2,"href":"https:\/\/nguenkam.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/229\/revisions"}],"predecessor-version":[{"id":256,"href":"https:\/\/nguenkam.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/229\/revisions\/256"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nguenkam.com\/blog\/index.php\/wp-json\/wp\/v2\/media\/255"}],"wp:attachment":[{"href":"https:\/\/nguenkam.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nguenkam.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nguenkam.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}