zoukankan      html  css  js  c++  java
  • nginx基础

    命令

    windiws启动nginx命令:start nginx

    sudo nginx #打开 nginx
    nginx -s reload|reopen|stop|quit  #重新加载配置|重启|停止|退出 nginx
    nginx -t   #测试配置是否有语法错误
    
    nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]
    
    -?,-h           : 打开帮助信息
    -v              : 显示版本信息并退出
    -V              : 显示版本和配置选项信息,然后退出
    -t              : 检测配置文件是否有语法错误,然后退出
    -q              : 在检测配置文件期间屏蔽非错误信息
    -s signal       : 给一个 nginx 主进程发送信号:stop(停止), quit(退出), reopen(重启), reload(重新加载配置文件)
    -p prefix       : 设置前缀路径(默认是:/usr/local/Cellar/nginx/1.2.6/-c filename     : 设置配置文件(默认是:/usr/local/etc/nginx/nginx.conf)
    -g directives   : 设置配置文件外的全局指令

    配置

    在配置Nginx服务的时候,可以给不同的uri访问指向不同的位置,例如下面的配置:

    server {
           listen       80;
           server_name  www.xx.com;
    
           location / {
              root   D:/www;      #定义默认根目录位置(windows系统)
              index index.php index.html index.htm;   #定义首页索引文件的名称
           }
     
           location /abc {
              root   D:/files/xx;      #定义其他请求的根目录位置(windows系统)
              index index.php index.html index.htm;   #定义首页索引文件的名称
           }
    }

    这里的默认路径没有问题,而/abc这个路径要想正常访问,在“D:/files/xx”目录下还需要有一个abc目录,否则会抛出404异常

    location

    语法规则: location [=|~|~*|^~] /uri/ { … }

    • = 开头表示精确匹配

    • ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。以xx开头

    • ~ 开头表示区分大小写的正则匹配                     以xx结尾

    • ~* 开头表示不区分大小写的正则匹配                以xx结尾

    • !~!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则

    • / 通用匹配,任何请求都会匹配到。

    匹配模式及顺序

    匹配字符串分为两种:普通字符串(literal string)和正则表达式(regular expression),其中 ~ 和 ~* 用于正则表达式, 其他前缀和无任何前缀都用于普通字符串。

    匹配顺序是:

    1、先匹配普通字符串,将最精确的匹配暂时存储;

    2、然后按照配置文件中的声明顺序进行正则表达式匹配,只要匹配到一条正则表达式,则停止匹配,取正则表达式为匹配结果;

    3、如果所有正则表达式都匹配不上,则取1中存储的结果;

    4、如果普通字符串和正则表达式都匹配不上,则报404 NOT FOUND。

    location   =   /uri         =开头表示精确前缀匹配,只有完全匹配才能生效。

    location   ^~   /uri        ^~开头表示普通字符串匹配上以后不再进行正则匹配。

    location   ~   pattern     ~开头表示区分大小写的正则匹配。

    location   ~*   pattern    ~*开头表示不区分大小写的正则匹配。

    location   /uri                  不带任何修饰符,表示前缀匹配。

    location   /                       通用匹配,任何未匹配到其他location的请求都会匹配到。

    注意:正则匹配会根据匹配顺序,找到第一个匹配的正则表达式后将停止搜索。普通字符串匹配则无视顺序,只会选择最精确的匹配。

    首先精确匹配 =-》其次以xx开头匹配^~-》然后是按文件中顺序的正则匹配-》最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

    例子,有如下匹配规则:

    location = / {
       #规则A
    }
    location = /login {
       #规则B
    }
    location ^~ /static/ {
       #规则C
    }
    location ~ .(gif|jpg|png|js|css)$ {
       #规则D,注意:是根据括号内的大小写进行匹配。括号内全是小写,只匹配小写
    }
    location ~* .png$ {
       #规则E
    }
    location !~ .xhtml$ {
       #规则F
    }
    location !~* .xhtml$ {
       #规则G
    }
    location / {
       #规则H
    }

    那么产生的效果如下:

    访问根目录/, 比如http://localhost/ 将匹配规则A

    访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则H

    访问 http://localhost/static/a.html 将匹配规则C

    访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用, 而 http://localhost/static/c.png 则优先匹配到 规则C

    访问 http://localhost/a.PNG 则匹配规则E, 而不会匹配规则D,因为规则E不区分大小写。

    访问 http://localhost/a.xhtml 不会匹配规则F和规则G,

    http://localhost/a.XHTML不会匹配规则G,(因为!)。规则F,规则G属于排除法,符合匹配规则也不会匹配到,所以想想看实际应用中哪里会用到。

    访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。

  • 相关阅读:
    SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSAS 系列
    微软BI 之SSRS 系列
    微软BI 之SSRS 系列
    配置 SQL Server Email 发送以及 Job 的 Notification通知功能
  • 原文地址:https://www.cnblogs.com/grasp/p/12357590.html
Copyright © 2011-2022 走看看