Maison  >  Article  >  développement back-end  >  Comment déployer des pages statiques à l'aide de Nginx

Comment déployer des pages statiques à l'aide de Nginx

不言
不言original
2018-06-04 10:40:124163parcourir

Cet article présente principalement la méthode d'utilisation de Nginx pour déployer des pages statiques. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Nginx. introduction

Nginx est un serveur HTTP très léger écrit par des Russes, prononcé comme "moteur X", est un proxy HTTP et inverse hautes performances. Le serveur est également un. Serveur proxy IMAP/POP3/SMTP. Nginx a été développé par le Russe Igor Sysoev pour le deuxième site Rambler.ru le plus visité de Russie, où il fonctionne depuis plus de deux ans et demi. Igor Sysoev a construit le projet sous licence BSD.

Nginx, en tant que serveur HTTP, possède les fonctionnalités de base suivantes :

  1. Traitement des fichiers statiques, des fichiers d'index et activation de la mise en mémoire tampon des descripteurs de fichiers ;

  2. Accélération du proxy inverse sans cache, équilibrage de charge simple et tolérance aux pannes.

  3. FastCGI, équilibrage de charge simple et tolérance aux pannes.

  4. Structure modulaire. Y compris des filtres tels que le gzipping, les plages d'octets, les réponses fragmentées et le filtre SSI. Si plusieurs SSI présents dans une même page sont traités par Fast CGI ou un autre serveur proxy, ce traitement peut s'exécuter en parallèle sans s'attendre.

  5. Prend en charge SSL et TLSSNI.

C'est-à-dire les avantages de Nginx : légèreté, hautes performances et fortes capacités de concurrence. Il est également très pratique de déployer des pages statiques.

Cette haute performance est due au framework Nginx. Après le démarrage de Nginx, il y aura un processus maître et plusieurs processus de travail. Le processus maître est principalement utilisé pour gérer les processus de travail, notamment : recevoir des signaux du monde extérieur, envoyer des signaux à chaque processus de travail, surveiller l'état d'exécution du processus de travail et redémarrer automatiquement un nouveau processus de travail lorsque le processus de travail se termine (sous circonstances anormales). Les événements réseau de base sont gérés dans le processus de travail. Plusieurs processus de travail sont peer-to-peer. Ils sont en concurrence égale pour les demandes des clients et chaque processus est indépendant les uns des autres. Une demande ne peut être traitée que dans un seul processus de travail, et un processus de travail ne peut pas traiter les demandes provenant d'autres processus. Le nombre de processus de travail peut être défini. Généralement, nous le définirons pour qu'il soit cohérent avec le nombre de cœurs de processeur de la machine. Ceci est lié au modèle de processus et au modèle de traitement des événements de Nginx.

Pourquoi choisir Nginx

Quand il s'agit de Nginx, la première réaction peut être le proxy inverse et charge équilibrée. Alors, qu’est-ce qu’un proxy inverse et qu’est-ce que l’équilibrage de charge ?

Proxy inversé

Comprenez d'abord ce qu'est un proxy direct. Le proxy, également appelé proxy réseau, est un service réseau spécial, de manière générale, il agit comme intermédiaire entre le client et le serveur cible, reçoit la demande du client, puis initie la demande correspondante au serveur cible en fonction de la demande du client. . Demande, obtenez la ressource spécifiée du serveur cible et renvoyez-la au client. Et le serveur proxy peut télécharger les ressources du serveur cible dans le cache local. Si la ressource que le client souhaite obtenir se trouve dans le cache du serveur proxy, le serveur proxy ne lancera pas de requête au serveur cible, mais la renverra directement. la ressource mise en cache.

En fait, les serveurs proxy sont très courants. Par exemple, certains agents Internet scientifiques qui existent grâce à GWF utilisent des serveurs étrangers comme serveurs proxy pour résoudre correctement les noms de domaine afin d'obtenir un accès scientifique à Internet. Les serveurs proxy peuvent également masquer la véritable adresse IP. Par exemple, le célèbre Tor (Onion Router) utilise plusieurs proxys et certaines technologies de cryptage pour réaliser une communication anonyme.

Le proxy inverse est utilisé comme proxy côté serveur, pas côté client. C'est-à-dire que le proxy direct est un proxy permettant aux utilisateurs du réseau interne d'accéder à la demande de connexion du serveur sur Internet. Le proxy inverse utilise le serveur proxy pour accepter la demande de connexion sur Internet, puis transmet la demande au serveur proxy. serveur sur le réseau interne et transfère la requête de serveur à serveur. Les résultats obtenus sont renvoyés au client demandant une connexion sur Internet. A ce moment, le serveur proxy apparaît comme un serveur vers le monde extérieur.

Équilibrage de charge

La technologie d'équilibrage de charge de proxy inverse transmet dynamiquement les demandes de connexion d'Internet à plusieurs serveurs du réseau interne de manière proxy inverse. réaliser l’équilibrage de charge.

Quelle coïncidence, Nginx a tout fait

Nginx, en tant qu'excellent serveur proxy, doit avoir un proxy inverse et un équilibrage de charge. Si vous souhaitez en savoir plus sur ces connaissances et leur utilisation, veuillez vous référer aux documents de référence fournis à la fin de l'article : Nginx Getting Started Guide.

Installation de Nginx

J'utilise le serveur Tencent Cloud, la version est : Ubuntu Server 14.04.1 LTS 32 bits.

$ apt-get install nginx

Le système Mac OS fait référence à cet article : Installation de Nginx sous Mac OS X

Configuration Nginx

Configurez simplement le fichier de configuration Nginx pour activer ces configurations lors du démarrage de Nginx. Et c’est l’objet de cet article.

Nginx 的配置系统由一个主配置文件和其他一些辅助的配置文件构成。这些配置文件均是纯文本文件,一般地,我们只需要配置主配置文件就行了。例如在我的服务器上是在:/etc/nginx/nginx.conf

指令上下文

nginx.conf 中的配置信息,根据其逻辑上的意义,对它们进行了分类,也就是分成了多个作用域,或者称之为配置指令上下文。不同的作用域含有一个或者多个配置项。

其中每个配置项由配置指令和指令参数构成,形成一个键值对,# 后面地为注释,理解起来也非常容易。

一般配置文件的结构和通用配置如下:

user www-data;  # 运行 nginx 的所属组和所有者
worker_processes 1;  # 开启一个 nginx 工作进程,一般 CPU 几核就写几
pid /run/nginx.pid;  # pid 路径

events {
    worker_connections 768;  # 一个进程能同时处理 768 个请求
    # multi_accept on;
}

# 与提供 http 服务相关的配置参数,一般默认配置就可以,主要配置在于 http 上下文里的 server 上下文
http {
    ##
    # Basic Settings
    ##

    ... 此处省略通用默认配置

    ##
    # Logging Settings
    ##
    ... 此处省略通用默认配置

    ##
    # Gzip Settings
    ##

    ... 此处省略通用默认配置

    ##
    # nginx-naxsi config
    ##

    ... 此处省略通用默认配置

    ##
    # nginx-passenger config
    ##

    ... 此处省略通用默认配置

    ##
    # Virtual Host Configs
    ##

    ... 此处省略通用默认配置

    # 此时,在此添加 server 上下文,开始配置一个域名,一个 server 配置段一般对应一个域名
    server {
        listen 80;        # 监听本机所有 ip 上的 80 端口
        server_name _;      # 域名:www.example.com 这里 "_" 代表获取匹配所有
        root /home/filename/;  # 站点根目录

        location / {       # 可有多个 location 用于配置路由地址
            try_files index.html =404;
        }
}

# 邮箱的配置,因为用不到,所以把这个 mail 上下文给注释掉
#mail {
#    # See sample authentication script at:
#    # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#    
#    # auth_http localhost/auth.php;
#    # pop3_capabilities "TOP" "USER";
#    # imap_capabilities "IMAP4rev1" "UIDPLUS";
#   
#    server {
#        listen   localhost:110;
#        protocol  pop3;
#        proxy    on;
#    }
#
#    server {
#        listen   localhost:143;
#        protocol  imap;
#        proxy    on;
#    }
#}

这里需要注意的是 http 上下文里的 server 上下文。

server {
    listen 80;        # 监听本机所有 ip 上的 80 端口
    server_name _;      # 域名:www.example.com 这里 "_" 代表获取匹配所有
    root /home/filename/;  # 站点根目录

    location / {       # 可有多个 location 用于配置路由地址
      try_files index.html =404;
    }
}

这里的 root 字段最好写在 location 字段的外边,防止出现无法加载 css、js 的情况。因为 css、js 的加载并不是自动的,nginx 无法执行,需要额外的配置来返回资源,所以,对于静态页面的部署,这样做是最为方便的。

这里对 root 作进一步解释,例如在服务器上有 /home/zhihu/ 目录,其下有 index.html 文件和 css/ 以及 img/ , root /home/zhihu/; 就将指定服务器加载资源时是在 /home/zhihu/ 下查找。

其次, location 后的匹配分多种,其各类匹配方式优先级也各不相同。这里列举一精确匹配例子:

server {
    listen 80;        
    server_name _;      
    root /home/zhihu/;  

    location = /zhihu {
      rewrite ^/.* / break;
      try_files index.html =404;
    }
}

此时,访问 www.example.com/zhihu 就会加载 zhihu.html 出来了。由于 location 的精确匹配,只有访问 www.example.com/zhihu 这个路由时才会正确响应,而且此时要通过 rewrite 正则匹配,把 /zhihu 解析替换成原来的 / 。关于更多 location 字段用法,可以在文章最后给出的参考资料中查看。

关于使用 nginx 部署静态页面,最简单便捷的配置方法

上面说了挺多关于配置的说明,下面推荐一种个人认为最为便捷的配置方法。(特此感谢 guyskk 学长的答疑解惑)

首先创建一个目录,例如: /home/ubuntu/website 然后在这个 website 文件夹下可以放置你需要部署的静态页面文件,例如 website 下我有 google、zhihu、fenghuang 这三个文件夹,其中 server 字段配置如下:

server {
    listen 80;
    server_name _;
    root /home/ubuntu/website;
    index index.html;
}

这里每个文件夹下面的静态页面文件名都是 index.html ,我以前有个很不好的习惯,比如 zhihu 页面就喜欢命名为 zhihu.html ,但就从前端来看,这也是不符合规范的。

这样配置的话,例如当你访问 www.showzeng.cn/google/ 时,nginx 就会去 website 目录下的 google 文件夹下寻找到 index.html 并把 google 页面返回,同理,访问 www.showzeng.cn/zhihu/ 时,会寻找到 zhihu 文件夹下的 index.html 并把 zhihu 页面返回。

而在 zhihu、google 、fenghuang 文件夹的同级目录上,再添加你的域名首页 index.html 时,访问 www.example.com 时就会返回了。

这里唯一美中不足的是,访问域名中 www.showzeng.cn/zhihu 末尾会自动加上 / ,在浏览器中按 F12 调试会发现 www.showzeng.cn/zhihu 为 301 状态码,因为 index.html 是在 zhihu/ 文件夹下,所以在搜索过程中会重定向到 www.showzeng.cn/zhihu/ ,起初我是接受不了的,那一 / 看起来太难受了,但是只要一想到要一个一个 location 字段去匹配,我一下子就接受了。不知道你怎么看,反正我是接受了。

Nginx 启动运行

$ sudo nginx -s reload

使用 reload 方法不用重启服务,直接重新加载配置文件,客户端感觉不到服务异常,实现平滑切换。当然你也可以重新启动 nginx 服务。

$ sudo service nginx restart

Nginx 停止运行

$ sudo nginx -s stop

相关推荐:

nginx应用:使用nginx进行负载均衡

使用nginx搭建高可用,高并发的wcf集群

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn