nginx相关知识点
浮川的小窝

nginx相关知识点

浮川先生
2024-11-08 发布 / 正在检测是否收录...

v2-7aac9ef2a6fe63d71971adfa7ff7695b_720w.png


b3f686be-1dce-4749-a5ac-a79825232095.jpeg

在 Nginx 配置文件中,root 和 alias 都用于指定文件系统中的路径,以便在处理请求时找到相应的资源

1.root 和 alias 的区别

/var/www/html
├── index.html
├── images
│   └── pic.jpg
└── static
    └── app.js

我们要将 /var/www/html 目录作为网站的根目录,并处理以下两种情况:

/ 请求时返回 index.html
/images/ 请求时返回 /var/www/html/images/ 下的文件。

root

示例:
server {
    listen 80;
    server_name example.com;

    # 根路径
    location / {
        root /var/www/html;
        # 将会找到 /var/www/html/index.html
    }

    # images 文件夹
    location /images/ {
        root /var/www/html;
        # 请求 /images/pic.jpg 时,Nginx 将去查找 /var/www/html/images/pic.jpg
    }
}

alias

示例:
server {
    listen 80;
    server_name example.com;

    # 根路径
    location / {
        root /var/www/html;
    }

    # images 文件夹
    location /images/ {
        alias /var/www/html/images/;
        # 请求 /images/pic.jpg 时,Nginx 会直接查找 /var/www/html/images/pic.jpg
    }
}

2.流量镜像功能

之前做过日志收集的系统 使用的方案是发送请求时同步调用日志服务器的数据数据收集接口 等于一次请求要发送两次的http请求 如果采用镜像可能会更优雅些

示例:
location / {
    mirror /mirror;
    proxy_pass http://backend;
}

location = /mirror {
    internal; # 路径只能被 Nginx 内部请求访问
    proxy_pass http://test_backend$request_uri;
}

3. Nginx常用的内置变量

859b3c4316231213ccd070308dd5dd98.jpeg

4. Nginx location 匹配规则

路径匹配,优先级:(跟 location 的书写顺序关系不大)
  1. 精确匹配
    =前缀的指令严格匹配这个查询。
    如果找到,停止搜索。
  2. 普通字符匹配
    所有剩下的常规字符串,最长的匹配。
    如果这个匹配使用^〜前缀,搜索停止。
  3. 正则匹配
    正则表达式,在配置文件中定义的顺序,匹配到一个结果,搜索停止;
  4. 默认匹配
    如果第3条规则产生匹配的话,结果被使用。
    否则,如同从第2条规则被使用。
示例:
  location = /exact { ... }          # 精准匹配
  location ^~ /images/ { ... }       # 通配前缀匹配
  location /images/pictures/ { ... } # 普通前缀匹配
  location / { ... }                 # 默认前缀匹配
  location ~ \.jpg$ { ... }          # 区分大小写的正则匹配
  location ~* \.png$ { ... }         # 不区分大小写的正则匹配
  • 请求 /exact:匹配 location = /exact,因为它是精准匹配。
  • 请求 /images/abc.jpg:匹配 location ^~ /images/,因为通配前缀匹配优先于正则。
  • 请求 /images/pictures/123.jpg:匹配 location /images/pictures/,因为它是最长的普通前缀匹配。
  • 请求 /test.jpg:匹配 location ~ .jpg$,因为它符合正则匹配。
  • 请求 /test.png:匹配 location ~* .png$,因为它符合不区分大小写的正则匹配。
  • 请求 /other:匹配 location /,因为它是最后的通用匹配。

未完待续...


参考:
民工哥技术之路
nginx在同一域名下部署多个vue项目

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏

评论 (0)

取消