• Nginx 配置


    content_by_lua ‘’;
    set_by_lua $c "return ngx.var.a + ngx.var.b";
    rewrite_by_lua "ngx.var.a = ngx.var.a + 1";
    access_by_lua '
                if ngx.var.remote_addr == "127.0.0.1" then
                    return
                end
    
                ngx.exit(403)
            ';
    

      

    虚拟主机

    server_name  .a.org; #可以用正则表达式 *.a.org 跟a.org 可以合并为 .a.org 多个域名并排,空格分隔

    显示目录或文件

    autoindex on;
    autoindex_exact_size on; #显示文件大小
    autoindex_localtime on; #显示最后修改时间

     压缩返回

    gzip on;
    gzip_types text/plain application/x-javascript text/css application/xml; #指定类型文件压缩
    gzip_min_length 1000; 
    gzip_buffers 4 8k;
    

    默认读取的文件

    index index.php index.html index.htm;
    

    设置网站的根目录

    root /var/nginx/avdata/public_html; #确保有目录权限x
    

    默认请求处理

    location / { #默认的处理
        try_files $uri $uri/ index.php?$args;
    }
    

    默认处理的匹配方式 配置的$uri 即不包含参数以/开头的请求地址

    ~ 区分大小写正则匹配

    ~* 不区分大小写正则匹配

    ^~ 如果匹配之后将停止往下检查

    = 完全相等

    例:

     location ~ \.php$ {#匹配.php的请求
      
     try_files $uri $uri/ index.php?$args;#$args显示传递GET参数
           include fastcgi.conf;
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php; }
    location = index.php {#匹配index.php ,非页面上输入index.php的请求.页面上index.php的请求为/index.php
                include fastcgi_params;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;#$fastcgi_script_name默认跟$uri相同
                fastcgi_index index.php;
    }
    

    静态文件超时

    location ~* \.(jpg|jpeg|gif|png|js|css)$ {#匹配指定结尾文件
                access_log off;#错误不记录日志
                expires 30d;#客户端缓存30天
    }

    通过规则:

    {}里面的设置不影响外部的设置,

    location / {
        root /var/nginx/a/public_html/hi;
    }

    外部的设置影响{}里的设置,所以可以在虚拟主机的外部定义root,全局共用

    IP监听

    listen       80; #IP:端口 或者直接端口,监听全部IP

    简单重写代替

    # 最后一个是处理方式或者是处理地址,之前的为文件或目录
    # 找不到对应文件或目录将用最后一个作为请求代替
    # $uri/ 以/结尾表示目录
    try_files $uri $uri/ index.php;#文件或目录找不到的时候用index.php代替$uri

    别名

    location /i/ {
        alias /good/; #但$uri为/i/*规则的时候,$uri将被修改为/good/* 不能用于正则表达式内的location
    }

    禁止访问

    location ~ \.db$ {#符合.db 结尾的文件禁止访问
                deny  all; 
    }

    指定IP访问

    location ~ \.db$ {#本机可访问.db 结尾的文件
        allow 127.0.0.1;
    }

    其他权限:

    location /hello {
            allow 127.0.0.1;
            deny all;
            echo "hello world";
        }

    传输速度限制

    #超过传输指定文件后限制速度
    limit_rate_after 1m; limit_rate 100k;

    404错误记录

    log_not_found off;# 404错误不记录
    

     定义静态404错误

            location / {//找不到文件定义状态吗
                try_files $uri $uri/  =404;
            }   
    location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_intercept_errors on;//让错误显示到前端
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }   
            error_page   404  /404.html;//自定义404

    规则:

    ~   为区分大小写匹配
    ~* 为不区分大小写匹配
    !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
    -f和!-f用来判断是否存在文件
    -d和!-d用来判断是否存在目录
    -e和!-e用来判断是否存在文件或目录
    -x和!-x用来判断文件是否可执行
    #ReWrite语法
    last - 基本上都用这个Flag。
    break - 中止Rewirte,不在继续匹配
    redirect - 返回临时重定向的HTTP状态302
    permanent - 返回永久重定向的HTTP状态301

    一些核心及内置变量:http://nginx.org/cn/docs/http/ngx_http_core_module.html

    附属:

    一般Nginx 变量值容器的生命期是与当前请求相关联的,有特殊的。
    变量是声明的,非过程的

    设置变量

    set $a aaa;

    输出变量

    echo $a;
    echo "a $a;"

    正常下,$都将被转义 所以 通过以下办法定义有$字符的变量

    geo $do {
    default "$";
    }

    执行某个地址:

    echo_exec /bar;
    echo_location /bar "a=1&b=2";
    

    获得参数:

    $arg_*
    

    输出指令不能有多条
    配合echo的前后

    echo_before_body "before...";
    echo_after_body "after...";
    

    处理顺序:

    rewrite
    access
    content (echo proxy_pass 等)
    index #(地址不为/弃权处理)
    autoindex #(地址不为/弃权处理)
    ngx_static
    find-config
    。。。
    try-files /file1 /file2 =403 #(挨个尝试文件是否存在)
    

    LUA 调用:

    content_by_lua ‘ ngx.exit(403)’;
    set_by_lua $c "return ngx.var.a + ngx.var.b";
    rewrite_by_lua "ngx.var.a = ngx.var.a + 1";
    access_by_lua '
                if ngx.var.remote_addr == "127.0.0.1" then
                    return
                end
    
                ngx.exit(403)
            ';

    示例:

        server {
            listen       80;
            server_name xx.com www.xx.com;
            gzip on;
            gzip_types text/plain application/x-javascript text/css application/xml;
            gzip_min_length 1000;
            gzip_buffers 4 8k;
            root    /var/www/xx/public_html/;
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
            location / {
                index  index.php index.html index.htm;
                try_files $uri $uri/ index.php?$args;
            }
            location ~ \.(ico|gif|bmp|jpg|jpeg|png|swf|js|css) {
                expires 7d;
                try_files $uri $uri/ index.php?$args;
            }
            location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_param KOHANA_ENV "TESTING";
                fastcgi_param  PHP_VALUE  "open_basedir=$document_root:/tmp/";
                include        fastcgi_params;
            }
            location = index.php {
                include fastcgi_params;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root/index.php;
                fastcgi_param KOHANA_ENV "TESTING";
                fastcgi_param  PHP_VALUE  "open_basedir=$document_root:/tmp/";
                fastcgi_index index.php;
            }
        }

    一般情况下记得把PHP某些函数禁用

    disable_functions = exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source,dl

    disable_classes = perl

  • 相关阅读:
    Handling Touches
    Learn the Basics
    Getting started
    (dev mode) install CONSUL on ubuntu
    Resilience4j usage
    spring cloud gateway
    courator
    courator
    js 获取服务器控件
    js
  • 原文地址:https://www.cnblogs.com/liushannet/p/2849585.html
Copyright © 2020-2023  润新知