• 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;
    
  • 相关阅读:
    502 IPO 上市
    501 Find Mode in Binary Search Tree
    500 Keyboard Row 键盘行
    498 Diagonal Traverse 对角线遍历
    Django_modelform组件
    Django_RBAC_demo2 升级版权限控制组件
    Django admin组件源码流程
    Django_rbac_demo 权限控制组件框架模型
    Django_重装系统后无法使用 sqlite 数据库报错:com.intellij.execution.ExecutionException: Exception in thread "main" java.lang.ClassNotFoundException: org.sqlite.JDBC
    python_面向对象小试题
  • 原文地址:https://www.cnblogs.com/mentalidade/p/6721131.html
Copyright © 2020-2023  润新知