常用变量
demo uri
www.example.com/mock/interface?param1=203¶m2=test
$args
uri中的参数值 ?后面的部分 param1=203¶m2=test
可以通过
if ($args != '')
判断参数值是否为空
$uri
域名后面部分不带参数 /mock/interface
$1 $2 … ...
任何正常匹配表达式都会更新这些值...
$host $http_host
$host www.example.com
$http_host 可能带端口号$remote_addr
本机ip
$proxy_add_x_forwarded_for
增加上自己IP的 x_forwared_for
location支持的匹配规则(按优先级排序)
精确匹配 =
location = /mock … … 无法匹配 /mock/interface
只有 location = /mock/interface 才能匹配前缀匹配 (同级 按最大匹配原则)^~
location ^~ /mock
location ^~/mock/interface 都能匹配到 但是后者生效按文件顺序匹配 ~
就是简单的正则匹配 但是同级之间 无最大匹配原则
location ~ ^/mock location ~ interface 都能匹配 具体匹配哪一个就看在conf文件里的位置不带任何修饰符的前缀匹配
location /mock/ 之类
location / 通用匹配
rewrite
重写uri rewrite之后 $uri的值会跟着修改
last 相当于重新发起一次请求 匹配所有的location
break马上只匹配 之前存在的location (如果在location内 则不包括自己)redirect 302
permanent 301 直接让客户端重新返回反向代理常用配置
location / { proxy_pass http://upstream_name; # 也可以是具体的ip/域名 proxy_set_header Host $host; # 设置发送到真正服务时http请求的host proxy_set_header X-Real-IP $remote_addr; # 设置真正的请求IP 但是似乎不是标准 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 在http请求打上代理机器的ip proxy_connect_timeout 30s; # 后端服务器连接超时时间 proxy_send_timeout 30s; # 代理发送超时时间 proxy_read_timeout 30s; # 代理接收超时时间 proxy_redirect off; # 对后端服务器重定向 host改写关闭 可配 client_max_body_size 10m; # 允许客户端请求的最大单文件字节数 client_body_buffer_size 128k; # 缓冲区代理缓冲用户端请求的最大字节数 proxy_buffer_size 4k; # nginx保存响应header的缓冲区大小 proxy_buffers 4 32k; # 缓存区个数 和 大小 proxy_busy_buffers_size 64k; # 高负荷时专门向客户端发送数据的缓冲区大小,来自于以上两块缓冲区,一般建议proxy_buffers*2 proxy_temp_file_write_size 64k; # 设定缓存文件夹大小,大于这个值,将从upstream服务器直接传到客户端}