Nginx代理模块允许传递请求到其它的服务器。
指令
Syntax: proxy_bind address | off;
Default: —
Context: http, server, location
This directive appeared in version 0.8.22.
强制将与代理本机连接绑到指定IP地址,通俗来讲就是配置了多个基于名称或者基于IP的主机情况下,如果希望代理连接由指定的主机处理,就可以使用该指令进行配置。
当值为off,系统自动分配本机IP地址。
Syntax: proxy_buffer_size size;
Default: proxy_buffer_size 4k|8k;
Context: http, server, location
设置第一次从代理服务器收到的响应的buffer的大小。这部分通常包含小的响应头部。默认,buffer大小等于内存页大小。可以是4K或8K,依赖于系统平台。当然也可以更小。
Syntax: proxy_buffering on | off;
Default: proxy_buffering on;
Context: http, server, location
开启或关闭代理服务器的响应buffer功能。当nginx收到代理服务器的响应时候,它通过proxy_buffer_size和proxy_buffer指令设置。如果正响应没有合适的内存,部分可以保存在temporary_file里面。写入内存则通过proxy_max_temp_file_size 和 proxy_temp_file_write_size指令来设置。
当buffering关闭的时候,请求传递到客户端是同步的,当nginx收到响应的时候,立即回复。收到响应数据的最大大小可以被proxy_buffer_size指令设置。
bufferring可以开启或禁止传递yes或no在”X-Accel-Buffering”响应头部中设置。这个能力可以使用proxy_ignore_headers指令禁止。
Syntax: proxy_buffers number size;
Default: proxy_buffers 8 4k|8k;
Context: http, server, location
类似于gzip_buffers不在叙述。
Syntax: proxy_busy_buffers_size size;
Default: proxy_busy_buffers_size 8k|16k;
Context: http, server, location
该指令限制同时处于busy状态的buffer大小,默认size为两倍的proxy_buffer_size和proxy_buffer指令的大小。
Syntax: proxy_cache zone | off;
Default: proxy_cache off;
Context: http, server, location
定义一个用于缓存的的共享内存区间,同样的区间可以被用在几个位置。参数值可以包含变量。off参数禁止缓存。
Syntax: proxy_cache_bypass string ...;
Default: —
Context: http, server, location
定义一个条件,什么响应不会从cache中获取。如果字符串参数至少一个值而且不为空,那么响应不会从cache中获取。
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
proxy_cache_bypass $http_pragma $http_authorization;
可以同proxy_no_cache指令一起使用。
Syntax: proxy_cache_convert_head on | off;
Default: proxy_cache_convert_head on;
Context: http, server, location
This directive appeared in version 1.9.7.
开启或禁止或禁止HRAD方法会话。当会话被禁止了,cache_key应该被配置为包含$request_method
Syntax: proxy_cache_key string;
Default: proxy_cache_key $scheme$proxy_host$request_uri;
Context: http, server, location
定义缓存的key,例如。
proxy_cache_key "$host$request_uri $cookie_user";
默认这个指令的值紧跟着字符串
proxy_cache_key $scheme$proxy_host$uri$is_args$args;
Syntax:proxy_cache_lock on | off;
Default:proxy_cache_lock off;
Context:http, server, location
当开启之后,只有一个请求在一段时间内被允许填充新的cache元素,根据proxy_cache_key指令来标示是什么cache传递到代理服务器。其它相同cache的请求要么等待cache中的响应,要么锁住这个cahe释放,根据proxy_cache_lock_timeout指令来设置。
Syntax: proxy_cache_lock_age time;
Default: proxy_cache_lock_age 5s;
Context: http, server, location
如果最近的请求传递到被代理的服务器来填充新的cache元素,还没有完成,一个或更多请求可以被传递到代理服务器。
Syntax: proxy_cache_lock_timeout time;
Default: proxy_cache_lock_timeout 5s;
Context: http, server, location
设置proxy_cahce_lock的超时时长,当time过期的时候,这个请求会传递到被代理的服务器,不管怎么样,响应不会被cached。
Before 1.7.8, the response could be cached.
Syntax: proxy_cache_methods GET | HEAD | POST ...;
Default: proxy_cache_methods GET HEAD;
Context: http, server, location
客户端的请求方法列出在这个指令中,然后想要被cached,”GET”和”HEAD”方法一直被加入这个list中,尽管官方要求精确的指定方法。
Syntax: proxy_cache_min_uses number;
Default: proxy_cache_min_uses 1;
Context: http, server, location
在响应数据被cached之后,发送给客户端的次数。
Syntax: proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
Default: —
Context: http
设置cahe的路径和其它参数,cache数据存储在文件里面,这个文件名是在cache中为应用MD5函数的结果。levels参数定义cache的层级关系。例如,在下面的配置中
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
文件名看起来就像这样
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
Syntax: proxy_cache_purge string ...;
Default: —
Context: http, server, location
This directive appeared in version 1.5.7.
定义一个条件,什么请求会被看做清除cache的请求。类似于proxy_cache_bypass。
案例:
proxy_cache_path /data/nginx/cache keys_zone=cache_zone:10m;
map $request_method $purge_method {
PURGE 1;
default 0;
}
server {
...
location / {
proxy_pass http://backend;
proxy_cache cache_zone;
proxy_cache_key $uri;
proxy_cache_purge $purge_method;
}
}
Syntax: proxy_cache_revalidate on | off;
Default: proxy_cache_revalidate off;
Context: http, server, location
开启cache重用功能,如果请求使用了”If-Modified-Since”和”If-None-Match”头部元素。
Syntax: proxy_cache_valid [code ...] time;
Default: —
Context: http, server, location
为不同的响应码设置不同的cache时间
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
指令实在是太多,请参考原文
http://nginx.org/en/docs/http/ngx_http_proxy_module.html
实例:
upstrean videobackend
{
server 192.168.1.2:80;
server 192.168.1.3:80;
server 192.168.1.4:80;
}
upstream filebackend
{
server 192.168.1.5:80;
server 192.168.1.6:80;
server 192.168.1.7:80;
}
server
{
listen 80;
server_name www.myweb.com
index index.html index.htm;
location /video/ {
proxy_pass http://videobackend;
proxy_set_header host $host ;
……
}
location /file/ {
proxy_pass http://filebackend;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
……
}
}
Nginx代理功能(未完)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
新版Nginx1.17体系化深度精讲 给开发和运维的刚需课程
wy53780
2020-04-23 14:03:13
nignx 负载均衡的几种算法介绍
jungiewolf
2019-02-23 00:35:55
consul + Nginx 实现nginx代理自动载入backed的服务器, 实现fullnat效果
tianshuai369
2019-02-23 00:34:58
Ubuntu14.04搭建LNMP平台
海龍s
2019-02-23 00:30:46
Nginx Web服务应用
yuanxingdexin
2019-02-23 00:30:46
CentOS5.5下Nginx的安装配置详解
huanjie6
2019-02-23 00:29:23
Nginx
gao491852809
2019-02-23 00:20:05
Nginx配置pathinfo
小海哥2010
2019-02-23 00:19:23
Apache与Nginx的优缺点比较
資本丿
2019-02-23 00:18:02
如何测试Nginx的高性能
xxrenzhe11
2019-02-22 23:58:35
Nginx如何实现反向代理
xxrenzhe11
2019-02-22 23:58:35
搭建Nginx服务器
天亮說再見
2019-02-22 23:56:57
ngx_http_rewrite_module模块
與你共時
2019-02-22 23:55:02
24小時熱門文章
-
再谈23种设计模式(3):行为型模式(学习笔记)
-
Power Automate Desktop 安装完,登录后老是提示one driver 错误
-
微前端学习笔记(4):从微前端到微模块之EMP与hel-micro方案探索
-
微前端学习笔记(1):微前端总体架构概述,从微服务发微
-
985 硕士程序员,空窗 4 个月没有 Offer!
-
一文搞懂 Spring 循环依赖
-
赛博斗地主——使用大语言模型扮演Agent智能体玩牌类游戏。
-
VScode右键打开(添加到右键)
-
记一次 .NET某工控视觉自动化系统 卡死分析
-
WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发