Pratique du scénario Nginx

不言
Libérer: 2023-03-25 13:26:01
original
1446 Les gens l'ont consulté

Cet article présente principalement la pratique de la scène sur Nginx, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

1. >

1. Ressources dynamiques et ressources statiques

Si la page demandée par le client est une page web statique, le serveur répondra directement au client avec le contenu de la page web statique. Si le client demande une page Web dynamique, le serveur doit d'abord remplacer la page Web dynamique par une page Web statique, puis répondre à la page Web statique convertie au client
Plusieurs types de ressources statiques

  • Rendu du navigateur : HTML, CSS, JAVASCRIPT

  • Images : JPEG, GIF, PNG...

  • Vidéo : FLV, MPEG...

  • Fichier : TXT, etc. Tout fichier à télécharger

2. ) réseau de distribution de contenu

L'idée de base est d'éviter autant que possible les goulots d'étranglement et les liens sur Internet qui peuvent affecter la vitesse et la stabilité de la transmission des données, afin que la transmission du contenu puisse être plus rapide et plus stable. En plaçant des serveurs de nœuds sur tout le réseau pour former une couche de réseau virtuel intelligent basé sur l'Internet existant, le système CDN peut analyser en temps réel le trafic réseau et l'état de connexion et de charge de chaque nœud, ainsi que la distance jusqu'à l'utilisateur. et le temps de réponse et d'autres informations complètes pour rediriger la demande de l'utilisateur vers le nœud de service le plus proche de l'utilisateur. Son objectif est de permettre aux utilisateurs d'obtenir le contenu requis à proximité, de résoudre la situation de congestion du réseau Internet et d'améliorer la vitesse de réponse de l'accès des utilisateurs au site Web.
3. Syntaxe de configuration

  1. sendfile (lecture du fichier)

  • Syntaxe de configuration : sendfile on|off ;

  • Par défaut : Aucun

  • Contexte : http, serveur, emplacement, si dans l'emplacement

  • tcp_nopush (lorsque sendfile est activé, améliore l'efficacité de la transmission des paquets réseau)

    • Syntaxe de configuration : tcp_nopush on|off;

    • Par défaut : Aucun

    • Contexte : http, serveur, emplacement

  • tcp_nodelay (sous connexion keepalive, améliore les paquets réseau Transmission en temps réel)

    • Syntaxe de configuration : tcp_nodely on|off;

    • Par défaut : Aucun

    • Contexte : http, serveur, localisation

  • gzip (compression)

    • Syntaxe de configuration : gzip on|off;

    • Par défaut : Aucun

    • Contexte : http, serveur, emplacement, si dans l'emplacement

  • gizp_comp_level (taux de compression)

    • Syntaxe de configuration : niveau gzip_comp_level ;

    • Par défaut : aucun ;

    • Contexte : http, serveur, localisation

  • gzip_http_version (version http gzip)

    • Syntaxe de configuration : gzip_http_version 1.0|1.1 ;

    • Par défaut : Aucun

    • Contexte : http, serveur, emplacement

  • gzip_static (fonction gzip de pré-lecture)

    • Syntaxe de configuration : gzip_static on|off|always;

    • Par défaut : gzip_static off ;

    • Contexte : http, serveur, emplacement

    4. 🎜>

    Mécanisme de mise en cache défini par le protocole HTTP (tel que : Expire ; Contrôle du cache, etc.)

      Le navigateur n'a pas de cache :
      • Demande du navigateur → Pas de cache → Demande du serveur WEB → Demande de réponse, négociation → Présent
      Le client a du cache
      • Demande du navigateur→avec cache→expiration de la vérification→présent
      mécanisme d'expiration de la vérification
      • Première demande :

      Pratique du scénario Nginx

      • Deuxième demande :

      Pratique du scénario Nginx

      • expire (les en-têtes de réponse ajoutent Cache-Control, Expires)

        • Syntaxe de configuration : expire l'heure [modifiée] ; expire l'époque |max |off;

        • Par défaut : expire après ;

        • Contexte : http, serveur, emplacement, si dans l'emplacement

      5. Accès intersites

      Comment Nginx permet-il l'accès intersites ? ? Access-Controller-Allow-Origin
      • add_header

        • Syntaxe de configuration : valeur du nom add_header [always];

        • Par défaut : Aucun

        • Contexte : http, serveur, emplacement, si dans l'emplacement

      nom OK Pour Access-Controller-Allow-Origin et Access-Controller-Allow-Method

      6. Anti-hotlinking

      Basé sur le module de configuration anti-hotlinking http_refer
      • Syntaxe de configuration : valid_referers none|blocked|server_names|string...;

      • Par défaut : Aucun

      • Contexte : serveur, emplacement

      valid_referers none blocked IP
      if($invalid_referer) {
          return 403;
      }
      Copier après la connexion

      Rappel : Vous pouvez utiliser curl pour tester la protection anti-sangsue configurée : curl -e "http:www.baidu.com" -I IP


      2. Nginx en tant que service proxy

      • Forward proxy

        • L'objet est le client (par exemple, si vous souhaitez accéder au serveur externe réseau, définissez le serveur proxy sur l'adresse proxy, le client Le client peut accéder à n'importe quel site Web)

      • Proxy inverse

        • L'objet est le serveur (vous n'avez pas besoin de vous soucier de l'accès) Quel que soit le serveur dont il s'agit, le proxy inverse sera placé côté serveur)

      • proxy_pass

        • Syntaxe de configuration : URL proxy_pass ;

        • Par défaut : Aucun

        • Contexte : emplacement, si dans l'emplacement, limit_sauf

      Une certaine syntaxe pour d'autres proxysSupplémentaire :
      • proxy_buffering (buffer )

        • Configuration de la syntaxe : proxy_buffering on | off;

        • Par défaut :

        • Contexte : http, serveur, emplacement

        • Extensions : proxy_buffer_size, proxy_buffers, proxy_busy_buffers_size

      • proxy_redirect (redirection de saut)

        • Syntaxe de configuration : proxy_redirect par défaut ;proxy_redirect off;proxy_redirect redirect remplacement ;

        • Par défaut : Aucun

        • Contexte : http, serveur, emplacement

      • proxy_set_header (informations d'en-tête)

        • Syntaxe de configuration : fichier proxy_set_header valeur ;

        • Par défaut : proxy_set_header Hôte $proxy_host;proxy_set_header Connexion fermée ;

        • Contexte : http, serveur, emplacement

        • Extension : proxy_hide_header, proxy_set_body

      • proxy_connect_timeout (timeout)

        • Syntaxe de configuration : proxy_connect_timeout time ;

        • Par défaut : Aucun

        • Contexte : http, serveur, emplacement

        • Extensions : proxy_read_timeout , proxy_send_timeout

      Exemple dans le fichier de configuration :
      proxy_pass http://127.0.0.1:8080;
      proxy_redirect default;
      
      proxy_set_header HOST $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      
      proxy_connect_timeout 30;
      proxy_send_timeout 60;
      proxy_read_timeout 60;
      
      proxy_buffer_size 32k;
      proxy_buffering on;
      proxy_buffers 4 128k;
      proxy_busy_buffers_size 256k;
      proxy_max_temp_file_size 256k;
      Copier après la connexion

      3. Nginx en tant que service d'équilibrage de charge

      Charger. équilibrage : Construit sur la base actuelle de la structure du réseau, il fournit une méthode peu coûteuse, efficace et transparente pour étendre la bande passante des périphériques et des serveurs réseau, augmenter le débit, améliorer les capacités de traitement des données du réseau et améliorer la flexibilité et la disponibilité du réseau.
      Équilibrage de charge, le nom anglais est Load Balance, signifie allouer l'exécution à plusieurs unités opérationnelles, telles que les serveurs Web, les serveurs FTP, les serveurs d'applications de clé d'entreprise et autres serveurs critiques, etc., afin d'effectuer conjointement le travail tâches.
      • amont

        • Syntaxe de configuration : nom en amont {...}

        • Par défaut : Aucun

        • Contexte : http

      Exemple de configuration simple :

      upstream ronaldo {
              server ip:port [param];
              server ip:port [param];
              server ip:port [param];
      }
      server {
          location / {
              proxy_pass http://ronaldo;
          }
      }
      Copier après la connexion

      param参数解释:

      param意义
      down当前的server暂时不参与负载均衡
      weight=num权重,num越大,轮询到的概率越大
      backup预留的备份服务器
      max_fails允许请求失败的次数
      fail_timeout经过max_fails失败后,服务暂停的时间(默认是10s)
      max_conns限制最大的接收的连接数

      调度算法:

      算法意义
      轮询按时间顺序逐一分配到不同的后端服务器
      加权轮询weight值越大,分配到的访问几率越高
      ip_hash每个请求按访问IP的hash结果分配,这样来自同一个IP就固定访问同一个后端服务器
      least_conn最少连接数,哪个服务器连接数少就分发
      url_hash按照访问的URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
      hash关键字值hash自定义的key
      • ip_hash:

        • 只需要在upstream中加入 ip_hash; 即可

        • 缺陷:如果走代理,那么remote_addr就不是用户真实的ip

      • url_hash(1.7.2版本以后可用):

        • 配置语法:hash key [consistent];

        • 默认:无

        • Context:upstream

      key可以是$request_uri,根据url进行hash

      四、Nginx作为缓存服务

      1、缓存的类型

      • 服务端缓存。例:memcache、reids

      • 代理缓存。例:Nginx缓存服务端的数据

      • 客户端缓存。

      Pratique du scénario Nginx

      2、常用缓存配置

      • proxy_cache_path

        • 配置语法proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size] [use_temp_path]...

        • 默认:无

        • Context:http

      • proxy_cache

        • 配置语法:proxy_cache zone | off;

        • 默认:proxy_cache off;

        • Context:http,server,location

      • proxy_cache_valid(缓存过期周期)

        • 配置语法:proxy_cache_valid [code...] time

        • 默认:无

        • Context:http、server、location

      • proxy_cache_key(缓存的维度)

        • 配置语法:proxy_cache_key string;

        • 默认:proxy_cache_key $scheme$proxy_host$request_uri;

        • Context:http、server、location

      常见配置:

      proxy_cache_path cache_path levels=1:2 keys_zone=key_name:10m max_size=10g inactive=60m use_temp_path=off;
      
      server {
          loaction / {
              proxy_pass http://ronaldo;
              proxy_cache key_name;
              proxy_cache_valid 200 304 12h;
              proxy_cache_valid any 10m;
              proxy_cache_key $host$uri$is_args$args;
              add_header Nginx-Cache "$upstream_cache_status";
      
              proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
          }
      }
      Copier après la connexion

      2、清除指定缓存

      • rm -rf 缓存目录内容

      • 第三方扩展模块:ngx_cache_purge

      3、如何让部分页面不缓存

      • proxy_no_cache

        • 配置语法:proxy_no_cache string ...;

        • 默认:无

        • Context:http,server,location

      简单示例

      if ($request_uri ~ ^/(url_3|login|register|password\/reset)) {
          set $cookie_nocache 1;
      }
      
      location / {
          proxy_no_cache $cookie_nocache;
      }
      Copier après la connexion

      4、大文件分片请求

      • slice

        • 语法配置:slice size;

        • 默认:slice 0;

        • Context:http、server,location

      优势:每个子请求收到的数据都会形成一个独立的文件,一个请求断了,其他请求不受影响。
      缺点:当文件很大或者slice很小的时候,可能会导致文件描述符耗尽等待情况。

      相关推荐:

      关于Nginx的基础内容

      Nginx编译安装Lua模块

    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!

    Étiquettes associées:
    source:php.cn
    Déclaration de ce site Web
    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
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal