问题
1.openresty请求时,不能解析域名?
openresty依赖配置里面的resolver 192.168.1.1;
2.文件上传是报错413 Request Entity Too Large
在配置文件的http{}段中加入 client_max_body_size 20m; 20m为允许最大上传的大小。
3.日志打印不出来
可能是日志级别过高,没有记录日志。
nginx变量
1.Nginx变量支持变量替换,类似于PHP的双引号引起来的变量
1.set $a '';(set y x;)意味着创建变量$a且初始化为空字符串。(set y x;x是自变量,y是因变量,将y赋值给x)
location /test {
set $orig_args $args;
set $args "a=3&b=4";
echo "original args: $orig_args";
echo "args: $args";
}
$ curl 'http://localhost:8080/test?a=0&b=1&c=2'
original args: a=0&b=1&c=2
args: a=3&b=4
2.map映射(map x y{}),用 map 指令定义了用户变量 $foo 与 $args 内建变量之间的映射关系。我们的 $args 就是“自变量” x,而 $foo 则是“因变量” y,即 $args 变量的值映射到了 $foo 变量上。
map $args $foo {
default 0;
debug 1;
}
server {
listen 8080;
location /test {
set $orig_foo $foo;
set $args debug;
echo "orginal foo: $orig_foo";
echo "foo: $foo";
}
}
上面这个map中default表示当其他的条件都不匹配时,才匹配(即$foo映射为0),如果$args == debug,$foo为1.
$ curl 'http://localhost:8080/test'
original foo: 0
foo: 0
上述foo仍然为0是因为 $foo 变量在第一次读取时,根据映射规则计算出的值被缓存住了。刚才我们说过,Nginx 模块可以为其创建的变量选择使用值容器,作为其“取处理程序”计算结果的缓存。
$ curl 'http://localhost:8080/test?debug'
original foo: 1
foo: 1
其值只在需要的时候才会计算获取, 这种只在实际使用对象时才计算对象值的技术,在计算领域被称为“惰性求值”(lazy evaluation)。
NGINX访问日志添加host
默认access.log没有host,添加host需要修改日志格式:
log_format main '$remote_addr - $remote_user [$time_local] "$http_host" "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent"';
access_log logs/access.log main;