Pratique du scénario Nginx
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
- sendfile (lecture du fichier)
- Syntaxe de configuration : sendfile on|off ;
- Par défaut : Aucun
- Contexte : http, serveur, emplacement, si dans l'emplacement
- Syntaxe de configuration : tcp_nopush on|off;
- Par défaut : Aucun
- Contexte : http, serveur, emplacement
- Syntaxe de configuration : tcp_nodely on|off;
- Par défaut : Aucun
- Contexte : http, serveur, localisation
- Syntaxe de configuration : gzip on|off;
- Par défaut : Aucun
- Contexte : http, serveur, emplacement, si dans l'emplacement
- Syntaxe de configuration : niveau gzip_comp_level ;
- Par défaut : aucun ;
- Contexte : http, serveur, localisation
- Syntaxe de configuration : gzip_http_version 1.0|1.1 ;
- Par défaut : Aucun
- Contexte : http, serveur, emplacement
- Syntaxe de configuration : gzip_static on|off|always;
- Par défaut : gzip_static off ;
- Contexte : http, serveur, emplacement
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 :
Première demande :
Deuxième demande :
-
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
add_header
Syntaxe de configuration : valeur du nom add_header [always];
Par défaut : Aucun
Contexte : http, serveur, emplacement, si dans l'emplacement
-
Syntaxe de configuration : valid_referers none|blocked|server_names|string...;
Par défaut : Aucun
-
Contexte : serveur, emplacement
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
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
amont
Syntaxe de configuration : nom en amont {...}
Par défaut : Aucun
Contexte : http
ip_hash:
只需要在upstream中加入 ip_hash; 即可
缺陷:如果走代理,那么remote_addr就不是用户真实的ip
url_hash(1.7.2版本以后可用):
配置语法:hash key [consistent];
默认:无
Context:upstream
服务端缓存。例:memcache、reids
代理缓存。例:Nginx缓存服务端的数据
客户端缓存。
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
rm -rf 缓存目录内容
第三方扩展模块:ngx_cache_purge
proxy_no_cache
配置语法:proxy_no_cache string ...;
默认:无
Context:http,server,location
slice
语法配置:slice size;
默认:slice 0;
Context:http、server,location
- Demande du navigateur → Pas de cache → Demande du serveur WEB → Demande de réponse, négociation → Présent
- Demande du navigateur→avec cache→expiration de la vérification→présent
5. Accès intersites
Comment Nginx permet-il l'accès intersites ? ? Access-Controller-Allow-Origin
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
valid_referers none blocked IP if($invalid_referer) { return 403; }
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
Une certaine syntaxe pour d'autres proxysSupplémentaire :
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;
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.
Exemple de configuration simple :
upstream ronaldo { server ip:port [param]; server ip:port [param]; server ip:port [param]; } server { location / { proxy_pass http://ronaldo; } }
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 |
key可以是$request_uri,根据url进行hash
四、Nginx作为缓存服务
1、缓存的类型
2、常用缓存配置
常见配置:
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; } }
2、清除指定缓存
3、如何让部分页面不缓存
简单示例
if ($request_uri ~ ^/(url_3|login|register|password\/reset)) { set $cookie_nocache 1; } location / { proxy_no_cache $cookie_nocache; }
4、大文件分片请求
优势:每个子请求收到的数据都会形成一个独立的文件,一个请求断了,其他请求不受影响。
缺点:当文件很大或者slice很小的时候,可能会导致文件描述符耗尽等待情况。
相关推荐:
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds



Pour permettre au serveur Tomcat d'accéder au réseau externe, vous devez : modifier le fichier de configuration Tomcat pour autoriser les connexions externes. Ajoutez une règle de pare-feu pour autoriser l'accès au port du serveur Tomcat. Créez un enregistrement DNS pointant le nom de domaine vers l'adresse IP publique du serveur Tomcat. Facultatif : utilisez un proxy inverse pour améliorer la sécurité et les performances. Facultatif : configurez HTTPS pour une sécurité accrue.

Hier, lors de l'entretien, on m'a demandé si j'avais posé des questions à longue traîne, j'ai donc pensé faire un bref résumé. Le problème à longue traîne de la conduite autonome fait référence aux cas extrêmes dans les véhicules autonomes, c'est-à-dire à des scénarios possibles avec une faible probabilité d'occurrence. Le problème perçu de la longue traîne est l’une des principales raisons limitant actuellement le domaine de conception opérationnelle des véhicules autonomes intelligents à véhicule unique. L'architecture sous-jacente et la plupart des problèmes techniques de la conduite autonome ont été résolus, et les 5 % restants des problèmes à longue traîne sont progressivement devenus la clé pour restreindre le développement de la conduite autonome. Ces problèmes incluent une variété de scénarios fragmentés, de situations extrêmes et de comportements humains imprévisibles. La « longue traîne » des scénarios limites dans la conduite autonome fait référence aux cas limites dans les véhicules autonomes (VA). Les cas limites sont des scénarios possibles avec une faible probabilité d'occurrence. ces événements rares

Étapes pour exécuter ThinkPHP Framework localement : Téléchargez et décompressez ThinkPHP Framework dans un répertoire local. Créez un hôte virtuel (facultatif) pointant vers le répertoire racine ThinkPHP. Configurez les paramètres de connexion à la base de données. Démarrez le serveur Web. Initialisez l'application ThinkPHP. Accédez à l'URL de l'application ThinkPHP et exécutez-la.

Pour résoudre l'erreur "Bienvenue sur nginx!", vous devez vérifier la configuration de l'hôte virtuel, activer l'hôte virtuel, recharger Nginx, si le fichier de configuration de l'hôte virtuel est introuvable, créer une page par défaut et recharger Nginx, puis le message d'erreur. disparaîtra et le site Web sera affiché normalement.

Étapes de déploiement de serveur pour un projet Node.js : Préparez l'environnement de déploiement : obtenez l'accès au serveur, installez Node.js, configurez un référentiel Git. Créez l'application : utilisez npm run build pour générer du code et des dépendances déployables. Téléchargez le code sur le serveur : via Git ou File Transfer Protocol. Installer les dépendances : connectez-vous en SSH au serveur et installez les dépendances de l'application à l'aide de npm install. Démarrez l'application : utilisez une commande telle que node index.js pour démarrer l'application ou utilisez un gestionnaire de processus tel que pm2. Configurer un proxy inverse (facultatif) : utilisez un proxy inverse tel que Nginx ou Apache pour acheminer le trafic vers votre application

La conversion d'un fichier HTML en URL nécessite un serveur Web, ce qui implique les étapes suivantes : Obtenir un serveur Web. Configurez un serveur Web. Téléchargez le fichier HTML. Créez un nom de domaine. Acheminez la demande.

Les instructions les plus couramment utilisées dans Dockerfile sont : FROM : créer une nouvelle image ou dériver une nouvelle image RUN : exécuter des commandes (installer le logiciel, configurer le système) COPY : copier des fichiers locaux dans l'image ADD : similaire à COPY, il peut automatiquement décompresser tar ou obtenir des fichiers URL CMD : Spécifiez la commande au démarrage du conteneur EXPOSE : Déclarez le port d'écoute du conteneur (mais pas public) ENV : Définissez la variable d'environnement VOLUME : Montez le répertoire hôte ou le volume anonyme WORKDIR : Définissez le répertoire de travail dans le conteneur ENTRYPOINT : spécifiez ce qu'il faut exécuter lorsque le conteneur démarre. Fichier exécutable (similaire à CMD, mais ne peut pas être écrasé)

Oui, Node.js est accessible de l’extérieur. Vous pouvez utiliser les méthodes suivantes : Utilisez Cloud Functions pour déployer la fonction et la rendre accessible au public. Utilisez le framework Express pour créer des itinéraires et définir des points de terminaison. Utilisez Nginx pour inverser les requêtes de proxy vers les applications Node.js. Utilisez des conteneurs Docker pour exécuter des applications Node.js et les exposer via le mappage de ports.
