nginx配置及常见问题

问题

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;
原文地址:https://www.cnblogs.com/mentalidade/p/6721131.html