Maison Opération et maintenance Nginx Quelle est la configuration et la fonction en amont de nginx ?

Quelle est la configuration et la fonction en amont de nginx ?

May 30, 2023 pm 10:28 PM
nginx upstream

# 🎜🎜 # Exemple de configuration # 🎜🎜 ## 🎜🎜 #

upstream backend {
  server backend1.example.com    weight=5;
  server backend2.example.com:8080;
  server unix:/tmp/backend3;

  server backup1.example.com:8080  backup;
  server backup2.example.com:8080  backup;
}

server {
  location / {
    proxy_pass http://backend;
  }
}
Copier après la connexion
# 🎜🎜 # # commande # 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 # Syntaxe: # 🎜🎜 ## 🎜🎜 # # nom en amont { ... }


Valeur par défaut : —Context:Définir un ensemble de serveurs. Ces serveurs peuvent écouter sur différents ports. De plus, les serveurs écoutant sur les sockets de domaine TCP et UNIX peuvent être mixtes. Exemple :
upstream backend {
  server backend1.example.com weight=5;
  server 127.0.0.1:8080    max_fails=3 fail_timeout=30s;
  server unix:/tmp/backend3;
}
Copier après la connexion
Par défaut, nginx distribue les requêtes à chaque serveur selon une rotation pondérée. Dans l'exemple ci-dessus, toutes les 7 requêtes seront distribuées de la manière suivante : 5 requêtes sont distribuées à backend1.example.com, 1 requête est distribuée au deuxième serveur et 1 requête est distribuée au troisième serveur. Si une erreur se produit lors de la communication avec le serveur, la requête sera transmise au serveur suivant jusqu'à ce que tous les serveurs disponibles aient été essayés. Si tous les serveurs renvoient un échec, le client recevra une réponse (d'échec) du dernier serveur avec lequel il a communiqué. Syntaxe :
#🎜🎜 #
http
adresse du serveur [paramètres];

#🎜 🎜#

Valeur par défaut :

—Définissez l'adresse du serveur et d'autres paramètres. L'adresse peut être un nom de domaine ou une adresse IP, et le port est facultatif, ou un chemin vers un socket de domaine Unix spécifiant le préfixe « unix : ». Si aucun port n'est spécifié, le port 80 est utilisé. Si un nom de domaine est résolu en plusieurs adresses IP, plusieurs serveurs sont essentiellement définis. Vous pouvez définir les paramètres suivants : weight=number définit le poids du serveur, la valeur par défaut est 1. max_fails=number définit le nombre de tentatives infructueuses de nginx pour communiquer avec le serveur. Dans le délai défini par le paramètre fail_timeout, si le nombre d'échecs atteint cette valeur, nginx considérera le serveur comme indisponible. Au cours de la prochaine période fail_timeout, le serveur ne sera pas réessayé. Le nombre de tentatives infructueuses est par défaut de 1. Le définir sur 0 arrêtera de compter les tentatives et considérera que le serveur est toujours disponible. Vous pouvez configurer ce qui est considéré comme une tentative échouée via les directives proxy_next_upstream, fastcgi_next_upstream et memcached_next_upstream. Lorsqu'il est configuré par défaut, l'état http_404 n'est pas considéré comme une tentative ayant échoué. fail_timeout=time settingsLa période de temps pour compter le nombre de tentatives échouées. Pendant cette période, si le serveur échoue pendant le nombre de tentatives spécifié, le serveur est considéré comme indisponible. La période de temps pendant laquelle le serveur est considéré comme indisponible.
Contexte : amont
# 🎜🎜#

Par défaut, ce délai d'attente est de 10 secondes. la sauvegarde est marquée comme serveur de sauvegarde. Lorsque le serveur principal est indisponible, les requêtes seront transmises à ces serveurs. down marque le serveur comme indisponible en permanence et peut être utilisé avec la directive ip_hash.

exemple :

upstream backend {
  server backend1.example.com   weight=5;
  server 127.0.0.1:8080      max_fails=3 fail_timeout=30s;
  server unix:/tmp/backend3;

  server backup1.example.com:8080 backup;
}
Copier après la connexion
  • Syntaxe :
  • ip_hash;

    #🎜 🎜 #

Valeur par défaut :

Contexte : #🎜🎜 #upstreamSpécifie la méthode d'équilibrage de charge du groupe de serveurs et les requêtes sont réparties entre les serveurs en fonction de l'adresse IP du client. Les trois premiers octets de l'adresse IPv4, ou l'adresse IPv6 entière, seront utilisés comme clé de hachage. Cette méthode garantit que les requêtes du même client seront transmises au même serveur. Sauf lorsque le serveur est considéré comme indisponible, ces requêtes clients seront transmises à d'autres serveurs, probablement le même serveur. Si l'un des serveurs souhaite être temporairement supprimé, le paramètre down doit être ajouté. Cela préserve la distribution actuelle du hachage de l’adresse IP du client. Exemple :

Prend en charge les adresses ipv6 à partir des versions 1.3.2 et 1.2.2.
upstream backend {
  ip_hash;

  server backend1.example.com;
  server backend2.example.com;
  server backend3.example.com down;
  server backend4.example.com;
}
Copier après la connexion
À partir des versions 1.3.1 et 1.2.2, la méthode d'équilibrage de charge d'ip_hash prend uniquement en charge la définition de la valeur de poids du serveur.

Syntaxe :

keepalive connexions;

# 🎜🎜#

Valeur par défaut :

Contexte : amont

这个指令出现在版本 1.1.4.

激活对上游服务器的连接进行缓存。

connections参数设置每个worker进程与后端服务器保持连接的最大数量。这些保持的连接会被放入缓存。 如果连接数大于这个值时,最久未使用的连接会被关闭。

需要注意的是,keepalive指令不会限制nginx进程与上游服务器的连接总数。 新的连接总会按需被创建。 connections参数应该稍微设低一点,以便上游服务器也能处理额外新进来的连接。

配置memcached上游服务器连接keepalive的例子:

upstream memcached_backend {
  server 127.0.0.1:11211;
  server 10.0.0.2:11211;

  keepalive 32;
}

server {
  ...

  location /memcached/ {
    set $memcached_key $uri;
    memcached_pass memcached_backend;
  }

}
Copier après la connexion

对于http代理,proxy_http_version指令应该设置为“1.1”,同时“connection”头的值也应被清空。

upstream http_backend {
  server 127.0.0.1:8080;

  keepalive 16;
}

server {
  ...

  location /http/ {
    proxy_pass http://http_backend;
    proxy_http_version 1.1;
    proxy_set_header connection "";
    ...
  }
}
Copier après la connexion

另外一种选择是,http/1.0协议的持久连接也可以通过发送“connection: keep-alive”头来实现。不过不建议这样用。

对于fastcgi的服务器,需要设置 fastcgi_keep_conn 指令来让连接keepalive工作:

upstream fastcgi_backend {
  server 127.0.0.1:9000;

  keepalive 8;
}

server {
  ...

  location /fastcgi/ {
    fastcgi_pass fastcgi_backend;
    fastcgi_keep_conn on;
    ...
  }
}
Copier après la connexion

当使用的负载均衡方法不是默认的轮转法时,必须在keepalive 指令之前配置。

针对scgi和uwsgi协议,还没有实现其keepalive连接的打算。

语法: least_conn;
 
默认值:
上下文: upstream

这个指令出现在版本 1.3.1 和 1.2.2.

指定服务器组的负载均衡方法,根据其权重值,将请求发送到活跃连接数最少的那台服务器。 如果这样的服务器有多台,那就采取有权重的轮转法进行尝试。

嵌入的变量

ngx_http_upstream_module模块支持以下嵌入变量:

$upstream_addr保存服务器的ip地址和端口或者是unix域套接字的路径。 在请求处理过程中,如果有多台服务器被尝试了,它们的地址会被拼接起来,以逗号隔开,比如: “192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock”。 如果在服务器之间通过“x-accel-redirect”头或者error_page有内部跳转,那么这些服务器组之间会以冒号隔开,比如:“192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock : 192.168.10.1:80, 192.168.10.2:80”。$upstream_response_time以毫秒的精度保留服务器的响应时间,(输出)单位是秒。 出现多个响应时,也是以逗号和冒号隔开。$upstream_status保存服务器的响应代码。 出现多个响应时,也是以逗号和冒号隔开。$upstream_http_...保存服务器的响应头的值。比如“server”响应头的值可以通过$upstream_http_server变量来获取。 需要注意的是只有最后一个响应的头会被保留下来。

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment vérifier si Nginx est démarré? Comment vérifier si Nginx est démarré? Apr 14, 2025 pm 12:48 PM

Dans Linux, utilisez la commande suivante pour vérifier si Nginx est démarré: SystemCTL Status Nginx Juges Basé sur la sortie de la commande: si "Active: Active (Running)" s'affiche, Nginx est démarré. Si "Active: Inactive (Dead)" est affiché, Nginx est arrêté.

Comment configurer Nginx dans Windows Comment configurer Nginx dans Windows Apr 14, 2025 pm 12:57 PM

Comment configurer Nginx dans Windows? Installez Nginx et créez une configuration d'hôte virtuelle. Modifiez le fichier de configuration principale et incluez la configuration de l'hôte virtuel. Démarrer ou recharger nginx. Testez la configuration et affichez le site Web. Activer sélectivement SSL et configurer les certificats SSL. Définissez sélectivement le pare-feu pour permettre le trafic Port 80 et 443.

Comment vérifier si Nginx est démarré Comment vérifier si Nginx est démarré Apr 14, 2025 pm 01:03 PM

Comment confirmer si Nginx est démarré: 1. Utilisez la ligne de commande: SystemCTl Status Nginx (Linux / Unix), netStat -ano | Findstr 80 (Windows); 2. Vérifiez si le port 80 est ouvert; 3. Vérifiez le message de démarrage NGINX dans le journal système; 4. Utilisez des outils tiers, tels que Nagios, Zabbix et Icinga.

Comment démarrer Nginx dans Linux Comment démarrer Nginx dans Linux Apr 14, 2025 pm 12:51 PM

Étapes pour démarrer Nginx dans Linux: Vérifiez si Nginx est installé. Utilisez SystemCTL Start Nginx pour démarrer le service NGINX. Utilisez SystemCTL Activer Nginx pour activer le démarrage automatique de Nginx au démarrage du système. Utilisez SystemCTL Status Nginx pour vérifier que le démarrage est réussi. Visitez http: // localhost dans un navigateur Web pour afficher la page de bienvenue par défaut.

Comment résoudre l'erreur Nginx403 Comment résoudre l'erreur Nginx403 Apr 14, 2025 pm 12:54 PM

Le serveur n'a pas l'autorisation d'accéder à la ressource demandée, ce qui donne une erreur NGINX 403. Les solutions incluent: vérifier les autorisations de fichiers. Vérifiez la configuration .htaccess. Vérifiez la configuration de Nginx. Configurez les autorisations Selinux. Vérifiez les règles du pare-feu. Dépanner d'autres causes telles que les problèmes de navigateur, les défaillances du serveur ou d'autres erreurs possibles.

Comment résoudre le problème du domaine croisé nginx Comment résoudre le problème du domaine croisé nginx Apr 14, 2025 am 10:15 AM

Il existe deux façons de résoudre le problème du domaine transversal NGINX: modifiez les en-têtes de réponse transversale: ajoutez des directives pour autoriser les demandes de domaine croisé, spécifier des méthodes et des en-têtes autorisés et définir le temps du cache. Utilisez le module CORS: Activez les modules et configurez les règles CORS pour permettre des demandes, des méthodes, des en-têtes et du temps de cache.

Comment résoudre nginx403 Comment résoudre nginx403 Apr 14, 2025 am 10:33 AM

Comment corriger l'erreur interdite Nginx 403? Vérifier les autorisations de fichier ou de répertoire; 2. Vérifier le fichier .htaccess; 3. Vérifiez le fichier de configuration NGINX; 4. Redémarrer Nginx. D'autres causes possibles incluent les règles de pare-feu, les paramètres de Selinux ou les problèmes d'application.

Comment démarrer le serveur Nginx Comment démarrer le serveur Nginx Apr 14, 2025 pm 12:27 PM

Le démarrage d'un serveur Nginx nécessite différentes étapes en fonction des différents systèmes d'exploitation: Système Linux / Unix: Installez le package NGINX (par exemple, en utilisant Apt-Get ou Yum). Utilisez SystemCTL pour démarrer un service NGINX (par exemple, sudo systemctl start nginx). Système Windows: téléchargez et installez les fichiers binaires Windows. Démarrer Nginx à l'aide de l'exécutable Nginx.exe (par exemple, nginx.exe -c conf \ nginx.conf). Peu importe le système d'exploitation que vous utilisez, vous pouvez accéder au serveur IP

See all articles