Nginx教程

nginx学习笔记1

本文主要是介绍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文件。

     

 

这篇关于nginx学习笔记1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!