Nginx-Szenariopraxis

不言
Freigeben: 2023-03-25 13:26:01
Original
1453 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Szenenpraxis über Nginx vor, die einen gewissen Referenzwert hat. Jetzt kann ich ihn mit allen teilen, die ihn brauchen.

1 >

1. Dynamische Ressourcen und statische Ressourcen

Wenn es sich bei der vom Client angeforderten Seite um eine statische Webseite handelt, antwortet der Server dem Client direkt mit dem Inhalt der statischen Webseite. Wenn der Client eine dynamische Webseite anfordert, muss der Server zunächst die dynamische Webseite durch eine statische Webseite ersetzen und dann dem Client auf die konvertierte statische Webseite antworten
Mehrere Arten statischer Ressourcen

  • Browser-Rendering: HTML, CSS, JAVASCRIPT

  • Bilder: JPEG, GIF, PNG...

  • Video: FLV, MPEG...

  • Datei: TXT usw. Jede Download-Datei

2 ) Netzwerk zur Verbreitung von Inhalten

Die Grundidee besteht darin, Engpässe und Links im Internet, die die Geschwindigkeit und Stabilität der Datenübertragung beeinträchtigen könnten, so weit wie möglich zu vermeiden, damit die Übertragung von Inhalten schneller und stabiler erfolgen kann. Durch die Platzierung von Knotenservern im gesamten Netzwerk, um eine Schicht eines intelligenten virtuellen Netzwerks basierend auf dem vorhandenen Internet zu bilden, kann das CDN-System den Netzwerkverkehr und den Verbindungs- und Auslastungsstatus jedes Knotens sowie die Entfernung zum Benutzer in Echtzeit analysieren und Antwortzeit sowie andere umfassende Informationen, um die Anfrage des Benutzers an den Dienstknoten weiterzuleiten, der dem Benutzer am nächsten liegt. Sein Zweck besteht darin, es Benutzern zu ermöglichen, die benötigten Inhalte in der Nähe abzurufen, die Überlastungssituation des Internet-Netzwerks zu lösen und die Reaktionsgeschwindigkeit beim Zugriff der Benutzer auf die Website zu verbessern.
3. Konfigurationssyntax

  1. sendfile (Dateilesen)

  • Konfigurationssyntax: sendfile on|off ;

  • Standard: Keine

  • Kontext: http, Server, Standort, falls am Standort

  • tcp_nopush (wenn sendfile aktiviert ist, verbessert sich die Übertragungseffizienz von Netzwerkpaketen)

    • Konfigurationssyntax: tcp_nopush on|off;

    • Standard: Keine

    • Kontext: http, Server, Standort

  • tcp_nodelay (unter Keepalive-Verbindung Netzwerkpakete verbessern Echtzeitübertragung)

    • Konfigurationssyntax: tcp_nodely on|off;

    • Standard: Keine

    • Kontext: http, Server, Standort

  • gzip (Komprimierung)

    • Konfigurationssyntax: gzip on|off;

    • Standard: Keine

    • Kontext: http, Server, Standort, wenn am Standort

  • gizp_comp_level (Komprimierungsverhältnis)

    • Konfigurationssyntax: gzip_comp_level level;

    • Standard: keine;

    • Kontext: http, Server, Standort

  • gzip_http_version (gzip http-Version)

    • Konfigurationssyntax: gzip_http_version 1.0|1.1;

    • Standard: Keine

    • Kontext: http, Server, Standort

  • gzip_static (gzip-Vorlesefunktion)

    • Konfigurationssyntax: gzip_static on|off|always;

    • Standard: gzip_static off;

    • Kontext: http, Server, Standort

    4 🎜>

    Durch das HTTP-Protokoll definierter Caching-Mechanismus (z. B. Läuft ab; Cache-Kontrolle usw.)

      Browser hat keinen Cache:
      • Browser-Anfrage → Kein Cache → WEB-Server anfordern → Antwort anfordern, aushandeln → Vorhanden
      Der Client hat Cache
      • Browseranfrage→mit Cache→Verifizierungsablauf→vorhanden
      Verifizierungsablaufmechanismus
      • Erste Anfrage:

      Nginx-Szenariopraxis

      • Zweite Anfrage:

      Nginx-Szenariopraxis

      • expires (Antwortheader fügen Cache-Control hinzu, Expires)

        • Konfigurationssyntax: läuft ab [geändert] Zeit; läuft ab Epoche |max |off;

        • Standard: läuft ab;

        • Kontext: http, Server, Standort, falls vorhanden

      5. Standortübergreifender Zugriff

      Wie ermöglicht Nginx den standortübergreifenden Zugriff? ? Access-Controller-Allow-Origin
      • add_header

        • Konfigurationssyntax: add_header-Namenswert [immer];

        • Standard: Keine

        • Kontext: http, Server, Standort, falls am Standort

      Name OK Für Access-Controller-Allow-Origin und Access-Controller-Allow-Method

      6. Anti-Hotlinking

      Basierend auf dem http_refer Anti-Hotlinking-Konfigurationsmodul
      • Konfigurationssyntax: valid_referers none|blocked|server_names|string...;

      • Standard: Keine

      • Kontext: Server, Standort

      valid_referers none blocked IP
      if($invalid_referer) {
          return 403;
      }
      Nach dem Login kopieren

      Erinnerung: Sie können Curl verwenden, um den konfigurierten Anti-Leech-Schutz zu testen: curl -e "http:www.baidu.com" -I IP


      2 ein Proxy-Dienst

      • Proxy weiterleiten

        • Das Objekt ist der Client (wenn Sie beispielsweise auf das externe Netzwerk zugreifen möchten, Stellen Sie den Proxy-Server auf die Proxy-Adresse ein, der Client kann jede Website besuchen)

      • Reverse-Proxy

        • Das Objekt ist der Server (Sie müssen sich nicht darum kümmern, wo Sie zugreifen) Ein Server, der Reverse-Proxy wird auf der Serverseite platziert)

      • proxy_pass

        • Konfigurationssyntax: Proxy_Pass-URL

        • Standard: Keine >

        • Einige Syntax für andere Proxys

          Ergänzend

          :
      proxy_buffering (Puffer)
      • Syntaxkonfiguration: Proxy_buffering on |. off;

        • Standard: keine;
        • Kontext: http, Server, Standort
        • Erweiterungen: Proxy_buffer_size, Proxy_buffers, Proxy_busy_buffers_size
        • proxy_redirect (Sprungumleitung)

      • Konfigurationssyntax: Proxy_redirect Standard;proxy_redirect aus;proxy_redirect Umleitungsersatz;

        • Standard: Keine
        • Kontext: http, Server, Standort
        • proxy_set_header (Header-Informationen)

      • Konfigurationssyntax: Proxy_set_header-Dateiwert;

        • Standard: Proxy_set_header Host $proxy_host;proxy_set_header Verbindung geschlossen;
        • Kontext: http, Server, Standort
        • Erweiterung: Proxy_hide_header , Proxy_set_body
        • proxy_connect_timeout (Zeitüberschreitung)

      • Konfigurationssyntax: Proxy_Connect_Timeout-Zeit;

        • Standard: Keine
        • Kontext: http, Server, Standort
        • Erweiterungen: Proxy_read_timeout, Proxy_send_timeout
        • Beispiel in der Konfigurationsdatei:

          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;
          Nach dem Login kopieren

          3. Nginx als Lastausgleichsdienst
      Lastausgleich
      : Aufbauend auf der vorhandenen Netzwerkstruktur. Es bietet eine kostengünstige, effektive und transparente Methode, um die Bandbreite von Netzwerkgeräten und Servern zu erweitern und den Durchsatz zu erhöhen , verbessern die Datenverarbeitungsfunktionen des Netzwerks und verbessern die Flexibilität und Verfügbarkeit des Netzwerks.
      Lastausgleich, der englische Name ist Load Balance, bedeutet, die Ausführung mehreren Betriebseinheiten wie Webservern, FTP-Servern, Unternehmensschlüsselanwendungsservern und anderen geschäftskritischen Servern usw. zuzuweisen, um gemeinsam die Arbeit abzuschließen Aufgaben.

      Upstream
      • Konfigurationssyntax: Upstream-Name {...}

        • Standard: Keine
        • Kontext: http
        • Einfaches Konfigurationsbeispiel

          :
        • upstream ronaldo {
                  server ip:port [param];
                  server ip:port [param];
                  server ip:port [param];
          }
          server {
              location / {
                  proxy_pass http://ronaldo;
              }
          }
          Nach dem Login kopieren

          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缓存服务端的数据

          • 客户端缓存。

          Nginx-Szenariopraxis

          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;
              }
          }
          Nach dem Login kopieren

          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;
          }
          Nach dem Login kopieren

          4、大文件分片请求

          • slice

            • 语法配置:slice size;

            • 默认:slice 0;

            • Context:http、server,location

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

          相关推荐:

          关于Nginx的基础内容

          Nginx编译安装Lua模块

        Das obige ist der detaillierte Inhalt vonNginx-Szenariopraxis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage