美文网首页
nginx 配置

nginx 配置

作者: 大乔是个美少女 | 来源:发表于2021-04-22 14:56 被阅读0次

    今天改了一下nginx配置,发现好多概念不清楚,记录一下。

    ...              #全局块
    
    events {         #events块
       ...
    }
    
    http      #http块
    {
        ...   #http全局块
        server        #server块
        { 
            ...       #server全局块
            location [PATTERN]   #location块
            {
                ...
            }
            location [PATTERN] 
            {
                ...
            }
        }
        server
        {
          ...
        }
        ...     #http全局块
    }
    
    1. 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
    2. events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
    3. http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
    4. server块:配置虚拟主机的相关参数,一个http中可以有多个server。
    5. location块:配置请求的路由,以及各种页面的处理情况。

    location root alias 区别

    location ^~ /t/ {
         root /www/root/html/;
    }
    

    如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/t/a.html的文件。

    location ^~ /t/ {
         alias /www/root/html/new_t/;
    }
    

    如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html的文件。注意这里是new_t,因为alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。

    注意:

    1. 使用alias时,目录名后面一定要加"/"。
    2. alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。
    3. alias只能位于location块中。(root可以不放在location中)

    try_files

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    

    当用户请求 http://localhost/example 时,这里的 $uri 就是 /example
    try_files 会到硬盘里尝试找这个文件。如果存在名为 /$root/example(其中 $root 是项目代码安装目录)的文件,就直接把这个文件的内容发送给用户。
    显然,目录中没有叫 example 的文件。然后就看 $uri/,增加了一个 /,也就是看有没有名为 /$root/example/ 的目录。
    又找不到,就会 fall back 到 try_files 的最后一个选项 /index.php,发起一个内部 “子请求”,也就是相当于 nginx 发起一个 HTTP 请求到 http://localhost/index.php

    rewrite

    指令语法:rewrite regex replacement[flag];

    rewrite ^/(.*) http://www.baidu.com/ permanent;     # 匹配成功后跳转到百度,执行永久301跳转
    
    标记符号 说明
    last 本条规则匹配完成后继续向下匹配新的location URI规则
    break 本条规则匹配完成后终止,不在匹配任何规则
    redirect 返回302临时重定向
    permanent 返回301永久重定向

    location匹配规则

    正则匹配、普通匹配(最长字符匹配)

    location  /blog/ {
        与location顺序无关
        若完全匹配成功,就不在继续匹配,否则还会进行正则匹配
    }
    
    符号 规则
    ~ 波浪线表示执行一个正则匹配,区分大小写
    ~* 表示执行一个正则匹配,不区分大小写
    ^~ ^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
    = 进行普通字符精确匹配
    @ "@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
    / 通用匹配,任何请求都会匹配到

    相关文章

      网友评论

          本文标题:nginx 配置

          本文链接:https://www.haomeiwen.com/subject/vdzxrltx.html