• Nginx:动静分离(示意图+配置讲解)


    示意图:

     

    动静分离

    动静分离是指将动态内容和静态内容分开处理的一种方式。通常,动态内容是指由服务器端处理的,例如动态生成的网页、数据库查询等。静态内容是指不需要经过服务器端处理的,例如图片、CSS、JavaScript文件等。通过将动态内容和静态内容分开处理,可以提高服务器的性能和响应速度。

    在动静分离中,通常将Nginx作为前端服务器,将静态内容直接由Nginx处理并返回给客户端,而动态内容则交给后端服务器(如应用服务器)处理。Nginx可以通过配置来指定哪些请求是静态内容,这样它就可以直接从磁盘中读取并返回相应的文件,而不需要将请求转发给后端服务器。

    举例
    1. server {
    2. listen 80;
    3. server_name example.com;
    4. # 静态html文件处理
    5. location / {
    6. root html;
    7. index index.html index.htm;
    8. }
    9. # 静态图片文件处理
    10. location /picture {
    11. root resources;
    12. index index.html index.htm;
    13. }
    14. # 动态请求转发给后端服务器
    15. location /api {
    16. proxy_pass http://backend_server;
    17. }
    18. }

    配置文件

    alias与root

    root和alias指令都用于定义服务器文件系统中用于处理请求的根目录,但它们之间有一些关键区别:

    • Root指令:root指令用于设置请求的根目录。它是相对于Nginx配置文件中的root指令所在的位置的。如果请求的URI是/index.html,而root指令设置为/var/www/html,Nginx将会在/var/www/html目录下寻找index.html文件。
    • Alias指令:alias指令用于将请求映射到指定位置,可以用于创建映射到文件系统中不同位置的位置。与root指令不同,alias指令可以用于更灵活地重写URL路径。例如,如果请求的URI是/static/1.jpg,而alias指令设置为/var/www/html/images/,Nginx将会在/var/www/html/images/1.jpg位置查找文件。

    举例:(建议通过案例理解

    文件系统结构:

    1. /var/www/html
    2. |_ index.html
    3. |_ images
    4. |_ image1.jpg
    5. |_ ...

    请求路径都为:/images/pic.jpg,希望获得/var/www/html/image1目录下文件,讲述4种配置方式:

    • root绝对路径(有/):拼接root+请求路径
    1. server {
    2. location /images/ {
    3. root /var/www/html;
    4. }
    5. }
    • root相对路径(无/):拼接相对路径+请求路径
    1. server {
    2. location /images/ {
    3. root relative/path/to/html;
    4. }
    5. }
    • alias绝对路径:拼接alias+请求去除location后路径。
    1. server {
    2. location /images/ {
    3. alias /var/www/html/images/;
    4. }
    5. }
    • alias绝对路径:拼接alias+请求最后路径。
    1. server {
    2. location /images/ {
    3. alias relative/path/to/html/images;
    4. }
    5. }
    location

    匹配规则:

    • 前缀匹配:当location后面的字符串以/开头时,使用前缀匹配。例如:location /images/会匹配以/images/开头的所有URI,如/images/1.jpg、/images/logo.png等。
    • 正则表达式匹配:当location后面的字符串以~或~*开头时,使用正则表达式匹配。例如:location ~ \.(gif|jpg|png)$会匹配所有以.gif、.jpg或.png结尾的URI。

    匹配顺序:

    1. 精确匹配(=location = /path): 如果找到完全匹配的location,则Nginx将停止搜索并使用该location块。
    2. 正则表达式匹配(location ~ pattern): Nginx按照配置文件中定义的顺序依次检查每个正则表达式,并在第一个匹配上停止。
    3. 前缀匹配(location /prefix): 如果没有精确匹配或正则表达式匹配,Nginx会选择最长的前缀匹配。也就是说,它会寻找最具体的匹配项。
    4. 默认匹配(location /): 如果上述匹配都失败,则使用默认location块。通常情况下,如果没有显式指定,Nginx会将整个配置文件视为一个location /块。
  • 相关阅读:
    从TiDB迁移到OceanBase的实践分享
    axios网络模块封装
    【MySQL进阶之路丨第十六篇】一文带你精通MySQL函数
    RedisTemplate序列化后数据字段增加,代码无常,大肠包小肠
    深入JS 中三类循环原理和性能
    【Java 基础篇】Java Properties 详解:配置文件和键值对存储
    D基础_VOC2007 解析
    2022年11月PMP考试时间出炉!考生须知
    AWS API GATEWAY
    Flink K8s Operator 测试验证
  • 原文地址:https://blog.csdn.net/lifetime_gear/article/details/133819999