zoukankan      html  css  js  c++  java
  • nginx学习笔记1

    这里主要是记录本人在使用nginx搭建服务器的时候,遇到的一些问题,以及结合查找资料的一些学习笔记。

    编写自己的配置文件

    Nginx的配置文件在目录默认是/etc/nginx。

    如果我们自己编写一些新的配置文件的话,这里我们建议将新的配置文件归到sites-available目录下。然后这里讲解一下需要用到该目录下有两个子目录:

    sites-available,存放所有可用的网站配置(这里目录存放真正用到的配置);

    sites-enabled,Nginx运行时读取该目录下的配置文件,该目录下的文件都是软连接,指向sites-available下的实际配置文件。同时只有在sites-enabled下有软连接的配置文件才会生效。

    下面将首先在sites-available目录下创建配置文件,使用域名www.example.com作为配置文件名称,然后在sites-enabled下创建一个指向该配置文件的软连接使其生效。

    为了避免配置文件冲突,需要将默认的default配置文件在sites-enabled下的软连接删除。

    ##
    # You should look at the following URL's in order to grasp a solid understanding
    # of Nginx configuration files in order to fully unleash the power of Nginx.
    # http://wiki.nginx.org/Pitfalls
    # http://wiki.nginx.org/QuickStart
    # http://wiki.nginx.org/Configuration
    #
    # Generally, you will want to move this file somewhere, and start with a clean
    # file but keep this around for reference. Or just disable in sites-enabled.
    #
    # Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
    ##

    # Default server configuration
    #
    server {
    listen 9090 ;

    root /home/xxx/www_data;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
    root /home/xxx/www_data/html;
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
    }

    location /soft {
    root /home/xxx/www_data/soft;
    }

    location ~* .(mov|mp4|mp3)$ {
            #这里表示使用正则表达式,不区分大小写
    root /home/xxx/www_data/video/;
    }
    }

    location配置规则

    对于配置文件中的location配置规则,这里我们简单的说明一下:


    location语法

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

    2.location表达式类型

    ~ 表示执行一个正则匹配,区分大小写

    ~* 表示执行一个正则匹配,不区分大小写

    ^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。

    = 进行普通字符精确匹配。也就是完全匹配。

    @ "@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

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

    3.优先级规则

    等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项

    前缀普通匹配(^~)优先级次之。不支持正则表达式。使用前缀匹配,如果有多个location匹配的话,则使用表达式最长的那个

    正则表达式类型(~ ~*)的优先级次之。一旦匹配成功,则不再查找其他匹配项

    常规字符串匹配,如果有多个location匹配的话,则使用表达式最长的那个

    4.说明

    4.1先判断精准命中,如果命中,立即返回结果并结束解析过程

    4.2若未结束,判断前缀普通命中,如果有多个命中,使用表达式“最长”的命中结果,结束解析过程

    4.3若未结束,继续判断正则表达式的匹配,按正则表达式顺序为准,由上至下一旦匹配成功1个,立即返回结果,并结束解析过程

    4.4若未结束,继续普通命中,普通命中和前缀普通命中相似,顺序无所谓,按照location表达式的长短来确定命中结果

    配置文件中几个需要了解的知识

    1. try_files解决刷新404的问题

      location / {
                 root   /mydata/transfer/html/helper/dist;

                 index  index.html index.htm;

                 try_files  $uri $uri/ /index.html;
            }

      在配置中加上try_files,意思跟翻译差不多,“尝试读取文件”。

      uri这个是nginx的一个变量,存放着用户访问的地址,例如http://localhost:8200/chooseSize那么uri就是/chooseSize;uri/代表访问的是一个目录例如http://localhost:8200/chooseSize/那么就是/chooseSize/;最后/index.html就是我们首页的地址。

      最终上面的意思是:

      1. 如果第一个存在$uri,直接返回;

      2. 不存在的话读取第二个$uri/,如果存在,读取返回;

      3. 如果还是不存在,就会fall back到 try_files 的最后一个选项 /index.html,发起一个内部 “子请求”,也就是相当于 nginx 发起一个 HTTP 请求到 http://localhost:8200/index.html,再通过前端路由到/chooseSize。

    2. http的url和location的访问

      location ~* .(mov|mp4|mp3)$ {
              #这里表示使用正则表达式,不区分大小写
      root /home/xxx/www_data/video/;
      }

      如果一个请求的URI是http:xxxx/video/a.mp4时,web服务器将会返回服务器上:

      /home/xxx/www_data/video/video/a.mp4的文件,而不是/home/xxx/www_data/video/a.mp4文件。

  • 相关阅读:
    js事件冒泡替我背了很多黑锅 嘿嘿
    opencvmin函数
    关于Block Formatting Context--BFC和IE的hasLayout
    javascript面向对象包装类Class的类库解析
    nodejs中exports与module.exports的区别
    ie6固定定位层fixed
    CSS的类名交集复合选择器
    遮罩层覆盖整个页面
    nodejs的require模块及路径
    struts.properties配置详解
  • 原文地址:https://www.cnblogs.com/lihaiping/p/14726183.html
Copyright © 2011-2022 走看看