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
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
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
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; }
Rappel : Vous pouvez utiliser curl pour tester la protection anti-sangsue configurée : curl -e "http:www.baidu.com" -I IP
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;
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; } }
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
服务端缓存。例: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
常见配置:
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; } }
rm -rf 缓存目录内容
第三方扩展模块:ngx_cache_purge
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; }
slice
语法配置:slice size;
默认:slice 0;
Context:http、server,location
优势:每个子请求收到的数据都会形成一个独立的文件,一个请求断了,其他请求不受影响。
缺点:当文件很大或者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!