nginx配置比较杂乱的总结

常用变量

demo uri

www.example.com/mock/interface?param1=203&param2=test

$args

uri中的参数值 ?后面的部分 param1=203&param2=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服务器直接传到客户端
}
原文地址:https://www.cnblogs.com/Me1onRind/p/10799456.html